提醒:多看官网教程+错误信息,努力尝试不要放弃。这是我配置最复杂的开发环境。
本文需要的软件和库如下:
1.Qt下载地址:github 下载文件: qt-opensource-windows-x86-5.9.4.exe
2.vtk 下载地址:github 下载文件:vtk-v8.0.0.zip
3.vs2015
4.PCL1.8.1
- VTK编译方法
参考:win10环境下VTK7.1的编译和Qt调用VTK的详细教程二(VS2013编译支持Qt的VTK库)https://www.cnblogs.com/tianhu9102/p/7641397.html
VTK的CMAKE环境,qt相关设置非常重要
关键是非常耗时,用时2.5小时,vs下载了很多文件extradata(后来可以直接VTK下载)。第二次只选择了BULID_SHARED_LIBS,不要选中BUILD_EXAMPLES,BULID_TESTING,等,编译时间30分钟左右。
-
测试
以经典入门程序qt_visualizer作为测试,必须增加以下语句。
VTK_MODULE_INIT(vtkRenderingOpenGL2) ;
VTK_MODULE_INIT(vtkInteractionStyle) ;
VTK_MODULE_INIT(vtkRenderingFreeType);
测试程序<qt_visualizer>
#ifndef PCLVIEWER_H
#define PCLVIEWER_H
#include <iostream>
// Qt
#include <QMainWindow>
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2) ;
VTK_MODULE_INIT(vtkInteractionStyle) ;
VTK_MODULE_INIT(vtkRenderingFreeType);
// Point Cloud Library
#include <pcl/point_cloud.h>
#include <pcl/point_types.h>
#include <pcl/visualization/pcl_visualizer.h>
//
#include <QVTKOpenGLWidget.h>
// Visualization Toolkit (VTK)
#include <vtkRenderWindow.h>
typedef pcl::PointXYZRGBA PointT;
typedef pcl::PointCloud<PointT> PointCloudT;
namespace Ui
{
class PCLViewer;
}
class PCLViewer : public QMainWindow
{
Q_OBJECT
public:
explicit PCLViewer (QWidget *parent = 0);
~PCLViewer ();
public Q_SLOTS:
void
randomButtonPressed ();
void
RGBsliderReleased ();
void
pSliderValueChanged (int value);
void
redSliderValueChanged (int value);
void
greenSliderValueChanged (int value);
void
blueSliderValueChanged (int value);
protected:
boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer;
PointCloudT::Ptr cloud;
unsigned int red;
unsigned int green;
unsigned int blue;
private:
Ui::PCLViewer *ui;
};
#endif // PCLVIEWER_H
效果