00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef EXPORTCLOUDSDIALOG_H_
00029 #define EXPORTCLOUDSDIALOG_H_
00030
00031 #include <QDialog>
00032 #include <QMap>
00033 #include <QtCore/QSettings>
00034
00035 #include <rtabmap/core/Signature.h>
00036 #include <rtabmap/core/Parameters.h>
00037
00038 #include <pcl/point_cloud.h>
00039 #include <pcl/point_types.h>
00040 #include <pcl/PolygonMesh.h>
00041 #include <pcl/TextureMesh.h>
00042 #include <pcl/pcl_base.h>
00043
00044 class Ui_ExportCloudsDialog;
00045 class QAbstractButton;
00046
00047 namespace rtabmap {
00048 class ProgressDialog;
00049
00050 class ExportCloudsDialog : public QDialog
00051 {
00052 Q_OBJECT
00053
00054 public:
00055 ExportCloudsDialog(QWidget *parent = 0);
00056
00057 virtual ~ExportCloudsDialog();
00058
00059 void saveSettings(QSettings & settings, const QString & group = "") const;
00060 void loadSettings(QSettings & settings, const QString & group = "");
00061
00062 void exportClouds(
00063 const std::map<int, Transform> & poses,
00064 const std::map<int, int> & mapIds,
00065 const QMap<int, Signature> & cachedSignatures,
00066 const std::map<int, std::pair<pcl::PointCloud<pcl::PointXYZRGB>::Ptr, pcl::IndicesPtr> > & cachedClouds,
00067 const QString & workingDirectory,
00068 const ParametersMap & parameters);
00069
00070 void viewClouds(
00071 const std::map<int, Transform> & poses,
00072 const std::map<int, int> & mapIds,
00073 const QMap<int, Signature> & cachedSignatures,
00074 const std::map<int, std::pair<pcl::PointCloud<pcl::PointXYZRGB>::Ptr, pcl::IndicesPtr> > & cachedClouds,
00075 const QString & workingDirectory,
00076 const ParametersMap & parameters);
00077
00078 signals:
00079 void configChanged();
00080
00081 public slots:
00082 void restoreDefaults();
00083
00084 private slots:
00085 void updateReconstructionFlavor();
00086 void updateMLSGrpVisibility();
00087
00088 private:
00089 std::map<int, std::pair<pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr, pcl::IndicesPtr> > getClouds(
00090 const std::map<int, Transform> & poses,
00091 const QMap<int, Signature> & cachedSignatures,
00092 const std::map<int, std::pair<pcl::PointCloud<pcl::PointXYZRGB>::Ptr, pcl::IndicesPtr> > & cachedClouds,
00093 const ParametersMap & parameters) const;
00094 bool getExportedClouds(
00095 const std::map<int, Transform> & poses,
00096 const std::map<int, int> & mapIds,
00097 const QMap<int, Signature> & cachedSignatures,
00098 const std::map<int, std::pair<pcl::PointCloud<pcl::PointXYZRGB>::Ptr, pcl::IndicesPtr> > & cachedClouds,
00099 const QString & workingDirectory,
00100 const ParametersMap & parameters,
00101 std::map<int, pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr> & clouds,
00102 std::map<int, pcl::PolygonMesh::Ptr> & meshes,
00103 std::map<int, pcl::TextureMesh::Ptr> & textureMeshes);
00104 void saveClouds(const QString & workingDirectory, const std::map<int, Transform> & poses, const std::map<int, pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr> & clouds, bool binaryMode = true);
00105 void saveMeshes(const QString & workingDirectory, const std::map<int, Transform> & poses, const std::map<int, pcl::PolygonMesh::Ptr> & meshes, bool binaryMode = true);
00106 void saveTextureMeshes(const QString & workingDirectory, const std::map<int, Transform> & poses, const std::map<int, pcl::TextureMesh::Ptr> & meshes);
00107
00108 void setSaveButton();
00109 void setOkButton();
00110 void enableRegeneration(bool enabled);
00111
00112 private:
00113 Ui_ExportCloudsDialog * _ui;
00114 ProgressDialog * _progressDialog;
00115 };
00116
00117 }
00118
00119 #endif