qt(+vs2017)显示点云
参考链接:
Win10+VS2015环境下安装编译PCL1.8.1和VTK8.0.0(踩坑大全)https://blog.****.net/weixin_39871164/article/details/102879962
1.vs2017编译安装VTK (PCL点云显示是基于VTK做的)
- PCL191匹配的VTK版本是VTK8.1(PCL191\3rdParty\VTK\include\vtk-8.1)
-下载VTK8.1 (地址:https://gitlab.kitware.com/vtk/vtk/tree/v8.1.0)
- 使用cmake编译vtk
cmake编译安装配置VTK810全纪录
1.解压并重命名vtk-v8.1.0.zip 到\PCL191\3rdParty\VTK810
2. 新建XXX\VTK810\build 文件夹
3.点击Add Entry,添加CMAKE_DEBUG_POSTFIX,类型为“STRING”,其值设置为"-gd"。用来区分编译生成debug与release版本下的dll和lib文件,不然的话创建安装文件的时候debug与release版本,名字相同相互覆盖。
4.配置Cmake选项
①勾选已有的“BUILD_SHARED_LIBIRARES”和“VTK_GROUP_QT”,勾选之后分别表示动态编译VTK以及给VTK添加Qt支持。
②取消BUILD_EXAMPLES和BUILD_TEST的勾,貌似勾上后再用vs编译cmake编译后的vtk时会因为网络问题(可能需要科学上网)出错,不建议勾选
③将“CMAKE_INSTALL_PREFIX”设置为之前我们清空后的VTK目录,编译完后会生成include、lib、bin等目录
// ④VTK_RENDERING_BACKEND选项,之前我选择OpenGL2的时候,在后面显示点云法向量等可视化操作都会触发一个0x00007FFADF5FC201 (vtkRenderingOpenGL2-8.0.dll)的异常,然后重新cmake编译时选择OpenGL后就没出现了,所以如果出现类似这种情况的话可以尝试换个cmake下的OpenGL版本选项编译5.勾选"VTK_BUILD_QT_DESIGNER_PLUGIN"
在\VTK\Release\plugins\designer下生成QVTKWidgetPlugin.dll
5.config直到没有红色的条项出现后,点击generate进行生成6.Debug和Release模式下分别build、install存储
7.配置环境变量
由于更新了vtk库,所以需要分别更新配置(替换原来凡是出现\PCL191\3rdParty\VTK\bin的地方):
- 系统环境变量
- vs项目中的属性管理器的属性页(debug版本和release版本)设置:
①VC+±>目录的包含目录和库目录
②链接器->输入->附加依赖项中的vtk开头的库lib文件需要全部修改为对应新生成lib目录(debug版本和release版本相应设置)下的所有lib文件8 qt配置Qvtk控件
拷贝\VTK\Release\plugins\designer\QVTKWidgetPlugin.dll到路径Qt5.10.1\5.10.1\msvc2017_64\plugins\designer\下
(注意:一定是release版本的!)
运行中可能报错:
Error: no override found for 'vtkRenderWindow'. win是空指针
解决参考链接:https://blog.****.net/q1302182594/article/details/45270891
本人具体解决方案:
主窗口头文件 添加 #include <vtkAutoInit.h>
main.cpp/ 在main函数入口前 添加代码段 VTK_MODULE_INIT(vtkRenderingOpenGL2);
具体情况示cmake编译选项VTK_RENDERING_BACKEND决定。(我选的是OpenGL2).