|
@@ -0,0 +1,71 @@
|
|
|
+#include "mainwindow.h"
|
|
|
+#include "ui_mainwindow.h"
|
|
|
+
|
|
|
+#include <iostream>
|
|
|
+
|
|
|
+#include <QFileDialog>
|
|
|
+
|
|
|
+
|
|
|
+MainWindow::MainWindow(QWidget *parent)
|
|
|
+ : QMainWindow(parent)
|
|
|
+ , ui(new Ui::MainWindow)
|
|
|
+{
|
|
|
+ ui->setupUi(this);
|
|
|
+ vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
|
|
|
+ vtkSmartPointer<vtkGenericOpenGLRenderWindow> renderWindow = vtkSmartPointer<vtkGenericOpenGLRenderWindow>::New();
|
|
|
+ renderWindow->AddRenderer(renderer);
|
|
|
+ view.reset(new pcl::visualization::PCLVisualizer(renderer,renderWindow,"viewer",false));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+#if VTK890
|
|
|
+ view->setupInteractor(ui->vtk->interactor(),ui->vtk->renderWindow());
|
|
|
+#else
|
|
|
+ view->setupInteractor(ui->vtk->GetInteractor(),ui->vtk->GetRenderWindow());
|
|
|
+#endif
|
|
|
+
|
|
|
+#if VTK890
|
|
|
+ this->ui->vtk->setRenderWindow(renderWindow);
|
|
|
+#else
|
|
|
+ this->ui->vtk->SetRenderWindow(renderWindow);
|
|
|
+#endif
|
|
|
+
|
|
|
+ setWindowTitle("PCD Viewer");
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+MainWindow::~MainWindow()
|
|
|
+{
|
|
|
+ delete ui;
|
|
|
+}
|
|
|
+
|
|
|
+void MainWindow::resizeEvent(QResizeEvent *event)
|
|
|
+{
|
|
|
+ (void)event;
|
|
|
+ QSize sizemain = ui->centralwidget->size();
|
|
|
+
|
|
|
+ ui->vtk->setGeometry(5,5,sizemain.width()-10,sizemain.height()-10);
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+void MainWindow::on_actionLoad_triggered()
|
|
|
+{
|
|
|
+ //读取pcd文件并显示
|
|
|
+ pcl::PointCloud<pcl::PointXYZI>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZI>());//创建点云指针
|
|
|
+ QString fileName = QFileDialog::getOpenFileName(this, "Open PointCloud", ".", "Open PCD files(*.pcd)");
|
|
|
+ if(fileName == "") return;
|
|
|
+ pcl::io::loadPCDFile(fileName.toStdString(),*cloud);
|
|
|
+ pcl::visualization::PointCloudColorHandlerGenericField<pcl::PointXYZI> fildColor(cloud, "intensity"); // 按照y字段进行渲染
|
|
|
+ view->removePointCloud("cloud");
|
|
|
+ view->addPointCloud<pcl::PointXYZI>(cloud,fildColor,"cloud");
|
|
|
+
|
|
|
+ view->setCameraPosition(0,0,100,0,0,0,0,1,0);
|
|
|
+ view->resetCamera(); //视角
|
|
|
+ ui->vtk->update();
|
|
|
+#if VTK890
|
|
|
+ ui->vtk->renderWindow()->Render();
|
|
|
+#else
|
|
|
+ ui->vtk->GetRenderWindow()->Render();
|
|
|
+#endif
|
|
|
+}
|
|
|
+
|