diff --git a/Classes/Reconstruction.cpp b/Classes/Reconstruction.cpp index 561a694..af94e34 100644 --- a/Classes/Reconstruction.cpp +++ b/Classes/Reconstruction.cpp @@ -79,6 +79,18 @@ void Reconstruction::on_pushButton_3_clicked() { ui.stackedWidget->setCurrentIndex(2); ui.label_9->setVisible(FALSE); + boost::shared_ptr viewer(new visualization::PCLVisualizer("3D Viewer")); + viewer->setBackgroundColor(0, 0, 0); + viewer->setPointCloudRenderingProperties(visualization::PCL_VISUALIZER_POINT_SIZE, 1, "cloud"); + if(cloud.size()!=0) + { + PointCloud::Ptr cloudPtr(new PointCloud); + cloudPtr = cloud.makeShared(); + viewer->addPointCloud(cloudPtr, "cloud"); + viewer->setPointCloudRenderingProperties(visualization::PCL_VISUALIZER_POINT_SIZE, 1, "cloud"); + } + ui.qvtkWidget->SetRenderWindow(viewer->getRenderWindow()); + ui.qvtkWidget->update(); } #pragma endregion @@ -258,10 +270,12 @@ void Reconstruction::on_pushButton_12_clicked() // 导入点云 void Reconstruction::on_pushButton_13_clicked() { + QString fileName = QFileDialog::getOpenFileName( this, tr("open multiple image file"), "./", tr("PCD files(*.pcd);;All files (*.*)")); // todo 文件类型待确认 - + ui.label_9->setVisible(TRUE); + if (fileName.isEmpty()) { QMessageBox mesg; @@ -269,14 +283,13 @@ void Reconstruction::on_pushButton_13_clicked() return; } - ui.label_9->setVisible(TRUE); string pcd = fileName.toStdString(); - - PointCloud::Ptr cloud(new PointCloud); - io::loadPCDFile(pcd, *cloud); + PointCloud::Ptr cloudPtr(new PointCloud); + io::loadPCDFile(pcd, *cloudPtr); + cloud = *cloudPtr; boost::shared_ptr viewer(new visualization::PCLVisualizer("3D Viewer")); viewer->setBackgroundColor(0, 0, 0); - viewer->addPointCloud(cloud, "cloud"); + viewer->addPointCloud(cloudPtr, "cloud"); viewer->setPointCloudRenderingProperties(visualization::PCL_VISUALIZER_POINT_SIZE, 1, "cloud"); ui.qvtkWidget->SetRenderWindow(viewer->getRenderWindow()); ui.label_9->setVisible(FALSE); diff --git a/Classes/Reconstruction.h b/Classes/Reconstruction.h index 10f0acf..ddef52b 100644 --- a/Classes/Reconstruction.h +++ b/Classes/Reconstruction.h @@ -14,6 +14,7 @@ #include #include #include +#include using namespace pcl; using namespace std; @@ -28,6 +29,7 @@ private: Ui::ReconstructionClass ui; QString calPath; // 相机标定:标定图像的存储路径 QString picPath = "Result/result.png"; // 图案投影:拍摄照片的存储路径 + PointCloud cloud; bool confirmPic = false; // 图案投影:确定是否用所拍照片进行重建 QColor color = Qt::black; // 三维重建:颜色 void setStyle();