实现要确保 qt 配置了pcl 和vtk
创建项目
创建txt 修改为 pri
添加 include(1.pri 的路径) 重新构建
就在1.pri 添加pcl 环境 和 lib
INCLUDEPATH += F:/jmqt/PCL_1.11.1/include/pcl-1.11 \
F:/jmqt/PCL_1.11.1/3rdParty/VTK/include/vtk-8.2 \
F:/jmqt/PCL_1.11.1/3rdParty/Boost/include/boost-1_74 \
F:/jmqt/PCL_1.11.1/3rdParty/Eigen/eigen3 \
F:/jmqt/PCL_1.11.1/3rdParty/FLANN/include \
F:/jmqt/PCL_1.11.1/3rdParty/OpenNI2/include \
F:/jmqt/PCL_1.11.1/3rdParty/Qhull/include \
LIBS += F:/jmqt/PCL_1.11.1/lib/*.lib \
F:/jmqt/PCL_1.11.1/3rdParty/Qhull/lib/*.lib \
F:/jmqt/PCL_1.11.1/3rdParty/Boost/lib/*.lib \
F:/jmqt/PCL_1.11.1/3rdParty/VTK/lib/*.lib \
配置完成开始设计界面
添加一个按钮
把wigdet 提升 QVTKWidget
下面 查看是否提升成功
按钮转到槽
开始运行
搜索 dll 并且 进行复制
在次运行 发现 空白 并且 闪退
解决添加 头文件
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2)
VTK_MODULE_INIT(vtkInteractionStyle);
VTK_MODULE_INIT(vtkRenderingFreeType);
添加一些头文件
#include <string>
#include "QDebug"
#include <iostream>
#include <QFileDialog>
#include <pcl/visualization/cloud_viewer.h>
#include <pcl/io/io.h>
#include <pcl/io/pcd_io.h>//pcd 读写类相关的头文件。
#include <pcl/io/ply_io.h>
#include <pcl/point_types.h> //PCL中支持的点类型头文件。
#include <pcl/features/normal_3d.h>
#include <pcl/visualization/pcl_visualizer.h>
#include "vtkRenderWindow.h"
#include <vtkOutputWindow.h>
#include <vtkAutoInit.h>
//消除vtk 警告——不弹出vtkOutputWindow窗口
VTK_MODULE_INIT(vtkRenderingOpenGL2)
VTK_MODULE_INIT(vtkInteractionStyle);
VTK_MODULE_INIT(vtkRenderingFreeType);
//声明std
using namespace std;
vtkOutputWindow::SetGlobalWarningDisplay(0);//强制消除警告
在按钮里面 写 初始化+ 功能
void MainWindow::on_pushButton_clicked()
{
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud;
boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer;
cloud.reset(new pcl::PointCloud<pcl::PointXYZ>);
viewer.reset(new pcl::visualization::PCLVisualizer("viewer", false));
viewer->addPointCloud(cloud, "cloud");
//声明+初始化vtk
ui->widget->SetRenderWindow(viewer->getRenderWindow());
viewer->setupInteractor(ui->widget->GetInteractor(), ui->widget->GetRenderWindow());
ui->widget->update();
QString fileName = QFileDialog::getOpenFileName(this, "Open PointCloud", ".", "Open PCD files(*.pcd)");
pcl::io::loadPCDFile(fileName.toStdString(), *cloud);
viewer->updatePointCloud(cloud, "cloud");
viewer->resetCamera();
ui->widget->update();
}
运行