花了两天时间编译VTK9.1,然后通过VS所创建的Qt项目来显示点云。
根本目的
VS创建Qt项目,在ui设计界面中添加一个widget,用于显示点云。
正文
安装PCL过程中本身也会安装VTK,但是这个VTK不是最全的,所以就需要下载VTK的源码编译后对PCL中的VTK进行补充。说到这里,有必要放一个VTK源码下载链接,点击可以选择想要的版本进行下载。

因为PCL1.12.1中的VTK是9.1版本,所以最好下载VTK9.1.0进行编译。
下载之后需要用CMAKE-gui,本次所用的版本是3.24.0,点击这里去官网下载CMAKE

编译VTK的教程很多,看的有点眼花缭乱,都尝试过。主要按照这个教程编译成功了VTK9.1。
值得注意的是,这些路径都是需要改的,默认的路径是Qt/5.14.2/mingw73_64/bin/xxx.exe,乍一看好像跟下图中的一模一样,之前一直没改,configure也能成功,后面用VS2019生成时老出错,后面发现原来mingw73_64改成msvc2017_64或者msvc2019_64,本人的是msvc2017_64,教程没问题,真的需要细心。

这个教程中提到,要C++桌面开发和.net SDK,MFC好像是VTK的一个依赖库。

如果目前VS2019中还没有安装,可以点击 工具->获取工具和功能,就会跳出Visual Studio Installer,选择单个组件就可以完成MFC和.net SDK的安装了。那到底安装哪个版本的MFC,请参考教程1和教程2。
编译结束之后,一般得到一个debug版本的VTK和一个release版本的VTK。每个版本都有下图所示的4个文件夹。

很多教程中提到,要把编译之后得到的QVTKWidgetPlugin.dll、QVTKWidgetPlugin.exp和QVTKWidgetPlugin.lib这三个文件扔到Qt的某个文件夹中。可问题是,本人编译之后并没有得到,整个文件夹搜索也没有搜索到。后面看了很多帖子才知道,VTK9.1.0是不会产生这三个文件的,老的版本好像是可以。看此处了解详情。

那么得到VTK的debug和release版本后,需要用来对之前所安装的PCL1.12.1库中的VTK进行完善。这个帖子中说了要把哪些文件给提取出来。

这个帖子更直接,直接给出了编译好的VTK库,直接拿来替换掉PCL1.12.1中的VTK就可以了,极快。

真的感激,这个博主是好人。
当PCL库中的VTK被更新之后,是否可以用了呢?不是,在这一步卡了一天。也没有查到有人说的很明白。其实路径啥的都不需要再改了。但是就是会报错,报的错误是无法解析的外部命令,如下图所示。

后面终于发现,PCL库在没更新之前,关于VTK的外部依赖项有130个,更新之后有144项。只需要打开VS 链接器->输入->附加依赖项,将多出来的十几项加进去就好了。其实多出来的这些.lib就是我们编译VTK所需要的东西。这里直接给出来debug下这144个.lib文件名。直接覆盖掉之前那130个即可,release版本的需要把每个.lib文件名的d去掉,即XXX-9.1d.lib改成XXX-9.1.lib即可。
vtkcgns-9.1d.lib
vtkChartsCore-9.1d.lib
vtkCommonColor-9.1d.lib
vtkCommonComputationalGeometry-9.1d.lib
vtkCommonCore-9.1d.lib
vtkCommonDataModel-9.1d.lib
vtkCommonExecutionModel-9.1d.lib
vtkCommonMath-9.1d.lib
vtkCommonMisc-9.1d.lib
vtkCommonSystem-9.1d.lib
vtkCommonTransforms-9.1d.lib
vtkDICOMParser-9.1d.lib
vtkDomainsChemistry-9.1d.lib
vtkDomainsChemistryOpenGL2-9.1d.lib
vtkdoubleconversion-9.1d.lib
vtkexodusII-9.1d.lib
vtkexpat-9.1d.lib
vtkFiltersAMR-9.1d.lib
vtkFiltersCore-9.1d.lib
vtkFiltersExtraction-9.1d.lib
vtkFiltersFlowPaths-9.1d.lib
vtkFiltersGeneral-9.1d.lib
vtkFiltersGeneric-

本文详细记录了如何从源码编译VTK9.1并用于Qt项目中显示点云的过程,包括CMAKE配置、解决VS报错、更新PCL库中VTK依赖等步骤,最终成功创建QVTKOpenGLNativeWidget展示点云。
&spm=1001.2101.3001.5002&articleId=126629052&d=1&t=3&u=2ba31f47f3d84c29950017a0dc2346b0)
2591

被折叠的 条评论
为什么被折叠?



