想要在QT界面上显示点云,但PCL 1.8.1的自带VTK里缺少QVTKWidgetPlugin.dll插件,故需要重新编译下。
1. vtk源source
链接:https://pan.baidu.com/s/10kMCNJ-5UiYqRTOvrlrR9A
提取码:ug7p
2. 打开cmake,目录如下配置,build文件夹是自己在D:/vtk-v8.0.0目录下新建的

3.点击左下角的configure按钮

等待一段时间后,出现如下界面

Build选项勾选如下三个

CMake选项中的CMAKE_INSTALL_PREFIX设置为如下路径,即后面运行编译好的解决方案里install工程时,类似于pcl自带的vtk那种目录结构就会生成在这里面
VTK选项里如下得勾选上

再次点击Configure,配置完后报如下错误

如下发红位置处两行修改为如下:

再次点击左下角的configure按钮,结束完毕后再次按如下配置Ungrouped Entries

再次点击Configure,不再报错

点击Generate,生成工程

然后再点击Open project按钮用vs2017打开解决方案
检查下环境,当前我的是debug, x64

然后点击生成ALL_BUILD工程,时间会持续好长一段时间。
结束时发现1个报错信息

是由于在下载过程中有些文件没有及时download下来
1>-- [download 83% complete]
1>-- [download 84% complete]
1>CMake Error at D:/vtk-v8.0.0/CMake/ExternalData.cmake:1005 (message):
1> Object MD5=9e68ff1b1cc914ed88cd84f6a8235021 not found at:
1>
1> http://midas3.kitware.com/midas/api/rest?method=midas.bitstream.download&checksum=9e68ff1b1cc914ed88cd84f6a8235021&algorithm=MD5 ("HTTP response code said error")
1> http://www.vtk.org/files/ExternalData/MD5/9e68ff1b1cc914ed88cd84f6a8235021 ("Timeout was reached")
1>Call Stack (most recent call first):
1> D:/vtk-v8.0.0/CMake/ExternalData.cmake:1027 (_ExternalData_download_object)
1>
1>
到该目录下D:\vtk-v8.0.0\build\ExternalData\Objects\MD5发现才下了部分文件

这边我上传一份,解压后替换该文件夹MD5即可
链接:https://pan.baidu.com/s/1GItTKoBPeiil20RXgMwyYg
提取码:k4tz
然后再生成下ALL_BUILD工程
成功后再仅生成下INSTALL工程

然后去C盘的目录下C:\VTK,查看此文件夹

和pcl1.8.1里面自带的vtk结构类似。多了一个plugins文件夹,然后将此文件夹替换pcl1.8.1里面的如下文件夹即可

由于pcl1.8.1自带的vtk的debug版本含有-gd关键字,可以用如下python脚本修改文件名
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# author:jiugeshao
import os
import sys
filepath= r'C:/VTK/lib'
fileList = os.listdir(filepath)
currentpath = os.getcwd()
os.chdir(filepath)
for fileName in fileList:
result = "lib" in fileName
if(result):
os.rename(fileName,fileName.replace(".lib","-gd.lib"))
os.chdir(currentpath)
修改后文件夹里的lib名字格式如下:

工程切换到Release x64下再进行编译ALL_BUILD,编译完毕后,记得编译INSTALL
可以跑下例子QtVTKRenderWindows工程

在debug下跑时,报错

在release下跑时报错无法定位程序输入点vtkGUISupportQt-8.0.dll

此时注意下环境变量那边,因为安装QT时我同时安装了32bit和64bit两个版本,所以我把bin和lib都添加到了环境变量里。
同时要注意这四个路径放在最上方(环境变量里可以排序)

在debug模式下运行QtVTKRenderWindows工程,界面可以show出来,但是vtkoutputWindow中有报错信息
Either a filename was not specified or the specified directory does not contain any DICOM images.

我这里上传一份DICOM图

我放在D:\\ct文件夹下
链接:https://pan.baidu.com/s/1adDaWCQaTwgnLVARf2nQkg
提取码:h793
然后打开QtVTKRenderingWindows.cxx文件,如下方式修改

这样在debug和release模式下都能显示如下的界面:

我编译好后的debug版本和release版本vtk见百度网盘
链接:https://pan.baidu.com/s/199YssGsprlm99zkuI5eM3g
提取码:3ip5

本文介绍如何解决PCL1.8.1中VTK缺失QVTKWidgetPlugin.dll的问题,通过从源码编译VTK并生成所需插件,最终实现在QT界面上显示点云的功能。

1624

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



