河北省住房和城乡建设厅的网站,自学建立网站,无锡网站制作哪家公司好,婚纱网站策划书由于我电脑中有 QT5.12.6 VS2017#xff0c;就不介绍怎么安装了#xff0c;只介绍cmake#xff0c;pcl及vtk的配置步骤
为了便于后续QT的调用#xff0c;以下所有安装路径中均不能出现中文及空格等
PCL自带VTK是不完整的#xff0c;所以需要下载VTK源码进行重新编译使其…由于我电脑中有 QT5.12.6 VS2017就不介绍怎么安装了只介绍cmakepcl及vtk的配置步骤
为了便于后续QT的调用以下所有安装路径中均不能出现中文及空格等
PCL自带VTK是不完整的所以需要下载VTK源码进行重新编译使其支持QT。 一资源链接
【免费】pcl1.9.1vtk8.1.1cmake3.14.2用于win1064位下vs2017qt5.12.6资源-CSDN文库https://download.csdn.net/download/u012719076/88146824
资源内容 PCL 1.9.1版本对应的VTK版本为8.1
我选择的VTK 8.1.1版本
先将上述4个文件下载将所有压缩包解压
二、Cmake安装
点击cmake-3.14.2-win64-x64.msi 按照指示进行操作
注意 安装路径我没有选择默认路径我的路径为D:\ProgramFiles\Cmake
三、pcl安装
(一) PCL-1.9.1-AllInOne-msvc2017-win64.exe 的安装 1. 双击exe前两步默认第三步选择 Add PCL to the system PATH for all users 2.安装路径 D:\ProgramFiles\PCL\PCL1.9.1 -注意不能有空格
随后步骤 安装路径我选择了 D:\ProgramFiles\PCL
自动生成路径D:\ProgramFiles\PCL\PCL 1.9.1 注意这个路径中是有空格的qt中路径不能识别带空格路径所以要把这个空格去掉
最后安装路径为 D:\ProgramFiles\PCL\PCL1.9.1 3. 选择组件时全部选择--按照默认即可 4.OpenNI的安装
PCL安装快结束时会弹出来安装第三方库我的安装路径为
D:\ProgramFiles\PCL\PCL1.9.1\3rdParty\OpenNI2 其他按照默认安装即可
(二)解压拷贝
解压 pcl-1.9.1-pdb-msvc2017-win64.zip 将所有的pdb文件拷贝到pcl的安装路径下即可
D:\ProgramFiles\PCL\PCL1.9.1\bin
注意pcl中的vtk不用改动因为pcl1.9.1中的vtk为8.1.1与Qt中配置的vtk版本一致
至此PCL安装结束 四、vtk编译
(一)编译步骤
步骤主要参考下面两篇文章
VS2015 PCL1.8.0 QT_5.62 cmake3.82 编译VTK7.1生成QVTKWidgetPlugin.dll_恭勤不倦的博客-CSDN博客https://blog.csdn.net/ktony_90/article/details/77966904VTK8.2.0编译安装与测试用例运行win10 VS2017 Qt5ReleaseDebug_vtk 编译时怎么打开测试程序_LiveAn的博客-CSDN博客https://blog.csdn.net/anhec/article/details/86777302
vsqtvtkpclcmake下载、安装、配置以及过程中存在的一系列问题解决_vs安装vtk_ych什么都不会的博客-CSDN博客https://blog.csdn.net/m0_74195873/article/details/129910816 0. 先建2个空文件夹用来存放vtk编译程序和安装程序--在想要的安装路径下 1.以管理员的方式打开cmake选择好源码路径、编译路径、勾选 Advanced
VS2017Qt5.12.0PCL1.9.1开发环境配置过程详细记录_小龙就是爱学习的博客-CSDN博客
可参考这个设置 类型
1点击Add Entry添加CMAKE_PREFIX_PATH类型为“PATH”设置为QT的安装路径。 2点击Add Entry添加CMAKE_DEBUG_POSTFIX设置为_d。用来区分debug与release版本下的dll和lib文件不然的话创建安装文件的时候debug与release版本名字相同相互覆盖。
应该选 string 我选错了选了filepath
3然后点击 config 选择 vs2017---x64 其他默认 配置好后会冒出一堆红不要怕继续。。 2. 勾选-配置--再次 config 勾选BUILD_SHARED_LIBS使生成VTK的lib与dll 勾选BUILD_EXAMPLES使编译生成一些
勾选VTK_Group_Qt让VTK支持Qt Application
设置CMAKE_INSTALL_PREFIX目录为VTK安装目录(D:\ProgramFiles\VTK\VTK811\install) 3.确认路径及 再次 config
2步骤点击config后红色缺少少了很多这一步主要是请确认红色变量的路径(Qt路径Examples路径)是否正确以及Qt的版本是否为5 此步点击config后虽然显示config done 还是有红的确认后再次点击config直到没有红色的出现
4. 点击Generate
在编译路径builid下 生成vtk工程 (二) vs生成lib与dll
1.打开 vtk工程
用管理员模式打开VS2017 然后打开工程 VTK.sln
路径在 D:\ProgramFiles\VTK\VTK811\build
2.debug模式下
(1).编译ALL-BUILD工程
选择 debug x64模式 点击 ALL-BUILD工程 生成---重新生成ALL-BUILD 编译过程大概一小时 经过一个小时左右编译结果如下
269------ 已启动全部重新生成: 项目: ALL_BUILD, 配置: Debug x64 ------
269Building Custom Rule D:/software/pcl/vtk-v8.1.1/vtk-v8.1.1/CMakeLists.txt
269CMake does not need to re-run because D:/ProgramFiles/VTK/VTK811/build/CMakeFiles/generate.stamp is up-to-date.全部重新生成: 成功 268 个失败 1 个跳过 0 个
失败的是 我没管继续编译install了
0CMake Error at D:/ProgramFiles/Cmake/share/cmake-3.14/Modules/ExternalData.cmake:1121 (message):
30
30
30 Object MD56424e2a51d932a5c93c361c14c3c4c49 not found at:
30
30 http://midas3.kitware.com/midas/api/rest?methodmidas.bitstream.downloadchecksum6424e2a51d932a5c93c361c14c3c4c49algorithmMD5 (HTTP response code said error)
30 http://www.vtk.org/files/ExternalData/MD5/6424e2a51d932a5c93c361c14c3c4c49 (Timeout was reached)
30
30
30C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(209,5): error MSB6006: “cmd.exe”已退出代码为 1。
(2).编译 INSTALL工程
点击INSTALL 工程鼠标右击依次选择 “仅用于项目 - 仅生成INSTALL”
编译成功后在VTK的安装路径下D:\ProgramFiles\VTK\VTK811\install
能看到如下信息dll与 lib 均带_d 3) 将上述文件夹放在新建的debug下然后重新弄release模式下的
3.release下
选择 release--x64 (1)ALL-BUILD工程
点击ALL-BUILD 右键 选择 生成
编译了大概半小时 生成: 成功 268 个失败 1 个最新 0 个跳过 0 个
还是失败还是 cmake (2). INSTALL工程
点击INSTALL 工程鼠标右击依次选择 “仅用于项目 - 仅生成INSTALL”
编译成功后在VTK的安装路径下D:\ProgramFiles\VTK\VTK811\install
能看到如下信息dll与 lib 均不带_d
(3) 将生成的release下所有文件拷贝到新建文件夹下 (4)dll拷贝到QT的designer路径下
将 release版 QVTKWidgetPlugin.dll必须是release版的添加到你的QT的designer的路径下D:\QT\5.12.6\msvc2017_64\plugins\designer
就可以在msvc2017_64版本的Qt Designer中添加QVTKWidget控件了 (三)测试vtk
测试vtk是否编译成功VTK工程中选择 cube工程右键设为 启动项目
然后点击运行会出现如下图所示
同理也可以测试 Cone6工程测试是圆锥 五、环境变量设置
(一)PCL系统环境变量配置
系统环境变量path中新添加以下几个变量值
//用下面的
D:\ProgramFiles\PCL\PCL1.9.1\bin
D:\ProgramFiles\PCL\PCL1.9.1\3rdParty\Boost\lib
D:\ProgramFiles\PCL\PCL1.9.1\3rdParty\FLANN\bin
D:\ProgramFiles\PCL\PCL1.9.1\3rdParty\Qhull\bin
D:\ProgramFiles\PCL\PCL1.9.1\3rdParty\OpenNI2\Lib
D:\ProgramFiles\PCL\PCL1.9.1\3rdParty\OpenNI2\Redist
D:\ProgramFiles\PCL\PCL1.9.1\3rdParty\OpenNI2\Tools 注意
注意pcl中的vtk不用改动因为pcl1.9.1中的vtk为8.1.1与Qt中配置的vtk版本一致
(二)vtk环境变量设置
将vtk配置到系统的环境变量中
D:\ProgramFiles\VTK\VTK811\install\debug\bin
D:\ProgramFiles\VTK\VTK811\install\release\bin 六 qt createtor设计器中 是没有QVTKWidget 打开了我的qt creator 发面 ui界面是没有QVTKWidget的但是单独打开 designer 发现里面是有的
参考Windows10下QTVTKPCL环境配置一次成功_qt pcl_v俊逸的博客-CSDN博客
没有问题 Qt creator不会显示QVTK但是Qt Designer中有使用过程中不会影响。这是个历史遗留问题 Qt一直没解决。 打开单独的qt designer在左下角就会出现啦 七、Qt-PCL测试
由于测试vtk时出现了问题就先测试下pcl看安装是否成功
(一)查看文件夹下所有_d.lib文件
获取某一文件夹下文件名的批处理步骤
获取某一文件夹下文件名的批处理步骤
新建一个1.txt输入如下命令
dir /a-d /b *scr.txt
再将1.txt后缀名改为.bat即1.bat运行就会生成一个scr.txt
里面存放的是文件名复制所有.lib文件名即去掉1.bat和scr.txt到附加依赖项即可完成配置。
(二)qt中pro文件配置
CONFIG debug_and_releaseINCLUDEPATH D:\ProgramFiles\PCL\PCL1.9.1\3rdParty\Boost\include\boost-1_68
INCLUDEPATH D:\ProgramFiles\PCL\PCL1.9.1\3rdParty\Boost\include\boost-1_68\boost
INCLUDEPATH D:\ProgramFiles\PCL\PCL1.9.1\3rdParty\Eigen\eigen3
INCLUDEPATH D:\ProgramFiles\PCL\PCL1.9.1\3rdParty\FLANN\include
INCLUDEPATH D:\ProgramFiles\PCL\PCL1.9.1\3rdParty\FLANN\include\flann
INCLUDEPATH D:\ProgramFiles\PCL\PCL1.9.1\3rdParty\Qhull\include
INCLUDEPATH D:\ProgramFiles\PCL\PCL1.9.1\3rdParty\OpenNI2\Include
INCLUDEPATH D:\ProgramFiles\PCL\PCL1.9.1\include\pcl-1.9message(peizhi)CONFIG(debug,debug|release){message(debug pro)
INCLUDEPATH D:\ProgramFiles\VTK\VTK811\install\debug\include\vtk-8.1
LIBS -LD:\ProgramFiles\PCL\PCL1.9.1\lib\-lpcl_common_debug\-lpcl_features_debug\-lpcl_filters_debug\-lpcl_io_debug\-lpcl_io_ply_debug\-lpcl_kdtree_debug\-lpcl_keypoints_debug\-lpcl_ml_debug\-lpcl_octree_debug\-lpcl_outofcore_debug\-lpcl_people_debug\-lpcl_recognition_debug\-lpcl_registration_debug\-lpcl_sample_consensus_debug\-lpcl_search_debug\-lpcl_segmentation_debug\-lpcl_stereo_debug\-lpcl_surface_debug\-lpcl_tracking_debug\-lpcl_visualization_debugLIBS -LD:\ProgramFiles\PCL\PCL1.9.1\3rdParty\Boost\lib\-llibboost_atomic-vc141-mt-gd-x64-1_68\-llibboost_bzip2-vc141-mt-gd-x64-1_68\-llibboost_chrono-vc141-mt-gd-x64-1_68\-llibboost_container-vc141-mt-gd-x64-1_68\-llibboost_context-vc141-mt-gd-x64-1_68\-llibboost_coroutine-vc141-mt-gd-x64-1_68\-llibboost_date_time-vc141-mt-gd-x64-1_68\-llibboost_exception-vc141-mt-gd-x64-1_68\-llibboost_fiber-vc141-mt-gd-x64-1_68\-llibboost_filesystem-vc141-mt-gd-x64-1_68\-llibboost_graph-vc141-mt-gd-x64-1_68\-llibboost_graph_parallel-vc141-mt-gd-x64-1_68\-llibboost_iostreams-vc141-mt-gd-x64-1_68\-llibboost_locale-vc141-mt-gd-x64-1_68\-llibboost_log-vc141-mt-gd-x64-1_68\-llibboost_log_setup-vc141-mt-gd-x64-1_68\-llibboost_math_c99-vc141-mt-gd-x64-1_68\-llibboost_math_c99f-vc141-mt-gd-x64-1_68\-llibboost_math_c99l-vc141-mt-gd-x64-1_68\-llibboost_math_tr1-vc141-mt-gd-x64-1_68\-llibboost_math_tr1f-vc141-mt-gd-x64-1_68\-llibboost_math_tr1l-vc141-mt-gd-x64-1_68\-llibboost_mpi-vc141-mt-gd-x64-1_68\-llibboost_numpy27-vc141-mt-gd-x64-1_68\-llibboost_numpy37-vc141-mt-gd-x64-1_68\-llibboost_prg_exec_monitor-vc141-mt-gd-x64-1_68\-llibboost_program_options-vc141-mt-gd-x64-1_68\-llibboost_python27-vc141-mt-gd-x64-1_68\-llibboost_python37-vc141-mt-gd-x64-1_68\-llibboost_random-vc141-mt-gd-x64-1_68\-llibboost_regex-vc141-mt-gd-x64-1_68\-llibboost_serialization-vc141-mt-gd-x64-1_68\-llibboost_signals-vc141-mt-gd-x64-1_68\-llibboost_system-vc141-mt-gd-x64-1_68\-llibboost_test_exec_monitor-vc141-mt-gd-x64-1_68\-llibboost_thread-vc141-mt-gd-x64-1_68\-llibboost_timer-vc141-mt-gd-x64-1_68\-llibboost_type_erasure-vc141-mt-gd-x64-1_68\-llibboost_unit_test_framework-vc141-mt-gd-x64-1_68\-llibboost_wave-vc141-mt-gd-x64-1_68\-llibboost_wserialization-vc141-mt-gd-x64-1_68\-llibboost_zlib-vc141-mt-gd-x64-1_68LIBS -LD:\ProgramFiles\PCL\PCL1.9.1\3rdParty\FLANN\lib\-lflann-gd\-lflann_cpp-gd\-lflann_cpp_s-gd\-lflann_s-gdLIBS -LD:\ProgramFiles\PCL\PCL1.9.1\3rdParty\OpenNI2\Lib\ -lOpenNI2LIBS -LD:\ProgramFiles\PCL\PCL1.9.1\3rdParty\Qhull\lib\-lqhull_d\-lqhullcpp_d\-lqhullstatic_d\-lqhullstatic_r_d\-lqhull_p_d\-lqhull_r_dLIBS -LD:\ProgramFiles\VTK\VTK811\install\debug\lib\-lvtkalglib-8.1_d\-lvtkChartsCore-8.1_d\-lvtkCommonColor-8.1_d\-lvtkCommonComputationalGeometry-8.1_d\-lvtkCommonCore-8.1_d\-lvtkCommonDataModel-8.1_d\-lvtkCommonExecutionModel-8.1_d\-lvtkCommonMath-8.1_d\-lvtkCommonMisc-8.1_d\-lvtkCommonSystem-8.1_d\-lvtkCommonTransforms-8.1_d\-lvtkDICOMParser-8.1_d\-lvtkDomainsChemistry-8.1_d\-lvtkexoIIc-8.1_d\-lvtkexpat-8.1_d\-lvtkFiltersAMR-8.1_d\-lvtkFiltersCore-8.1_d\-lvtkFiltersExtraction-8.1_d\-lvtkFiltersFlowPaths-8.1_d\-lvtkFiltersGeneral-8.1_d\-lvtkFiltersGeneric-8.1_d\-lvtkFiltersGeometry-8.1_d\-lvtkFiltersHybrid-8.1_d\-lvtkFiltersHyperTree-8.1_d\-lvtkFiltersImaging-8.1_d\-lvtkFiltersModeling-8.1_d\-lvtkFiltersParallel-8.1_d\-lvtkFiltersParallelImaging-8.1_d\-lvtkFiltersPoints-8.1_d\-lvtkFiltersProgrammable-8.1_d\-lvtkFiltersSelection-8.1_d\-lvtkFiltersSMP-8.1_d\-lvtkFiltersSources-8.1_d\-lvtkFiltersStatistics-8.1_d\-lvtkFiltersTexture-8.1_d\-lvtkFiltersTopology-8.1_d\-lvtkFiltersVerdict-8.1_d\-lvtkfreetype-8.1_d\-lvtkGeovisCore-8.1_d\-lvtkgl2ps-8.1_d\-lvtkglew-8.1_d\-lvtkGUISupportQt-8.1_d\
# -lvtkGUISupportQtOpenGL2-8.1_d\-lvtkGUISupportQtSQL-8.1_d\-lvtkhdf5-8.1_d\-lvtkhdf5_hl-8.1_d\-lvtkImagingColor-8.1_d\-lvtkImagingCore-8.1_d\-lvtkImagingFourier-8.1_d\-lvtkImagingGeneral-8.1_d\-lvtkImagingHybrid-8.1_d\-lvtkImagingMath-8.1_d\-lvtkImagingMorphological-8.1_d\-lvtkImagingSources-8.1_d\-lvtkImagingStatistics-8.1_d\-lvtkImagingStencil-8.1_d\-lvtkInfovisCore-8.1_d\-lvtkInfovisLayout-8.1_d\-lvtkInteractionImage-8.1_d\-lvtkInteractionStyle-8.1_d\-lvtkInteractionWidgets-8.1_d\-lvtkIOAMR-8.1_d\-lvtkIOCore-8.1_d\-lvtkIOEnSight-8.1_d\-lvtkIOExodus-8.1_d\-lvtkIOExport-8.1_d\-lvtkIOExportOpenGL2-8.1_d\-lvtkIOGeometry-8.1_d\-lvtkIOImage-8.1_d\-lvtkIOImport-8.1_d\-lvtkIOInfovis-8.1_d\-lvtkIOLegacy-8.1_d\-lvtkIOLSDyna-8.1_d\-lvtkIOMINC-8.1_d\-lvtkIOMovie-8.1_d\-lvtkIONetCDF-8.1_d\-lvtkIOParallel-8.1_d\-lvtkIOParallelXML-8.1_d\-lvtkIOPLY-8.1_d\-lvtkIOSQL-8.1_d\-lvtkIOTecplotTable-8.1_d\-lvtkIOVideo-8.1_d\-lvtkIOXML-8.1_d\-lvtkIOXMLParser-8.1_d\-lvtkjpeg-8.1_d\-lvtkjsoncpp-8.1_d\-lvtklibharu-8.1_d\-lvtklibxml2-8.1_d\-lvtklz4-8.1_d\-lvtkmetaio-8.1_d\-lvtkNetCDF-8.1_d\-lvtknetcdfcpp-8.1_d\-lvtkoggtheora-8.1_d\-lvtkParallelCore-8.1_d\-lvtkpng-8.1_d\-lvtkproj4-8.1_d\-lvtkRenderingAnnotation-8.1_d\-lvtkRenderingContext2D-8.1_d\-lvtkRenderingContextOpenGL2-8.1_d\-lvtkRenderingCore-8.1_d\-lvtkRenderingFreeType-8.1_d\-lvtkRenderingGL2PSOpenGL2-8.1_d\-lvtkRenderingImage-8.1_d\-lvtkRenderingLabel-8.1_d\-lvtkRenderingLOD-8.1_d\-lvtkRenderingOpenGL2-8.1_d\-lvtkRenderingQt-8.1_d\-lvtkRenderingVolume-8.1_d\-lvtkRenderingVolumeOpenGL2-8.1_d\-lvtksqlite-8.1_d\-lvtksys-8.1_d\-lvtktiff-8.1_d\-lvtkverdict-8.1_d\-lvtkViewsContext2D-8.1_d\-lvtkViewsCore-8.1_d\-lvtkViewsInfovis-8.1_d\-lvtkViewsQt-8.1_d\-lvtkzlib-8.1_d} else { #也可以按照下面进行设置没有此句
#CONFIG(release,debug|release){
message(release CameraUi.pro)
INCLUDEPATH D:\ProgramFiles\VTK\VTK811\install\release\include\vtk-8.1
LIBS -LD:\ProgramFiles\PCL\PCL1.9.1\lib\-lpcl_common_release\-lpcl_features_release\-lpcl_filters_release\-lpcl_io_ply_release\-lpcl_io_release\-lpcl_kdtree_release\-lpcl_keypoints_release\-lpcl_ml_release\-lpcl_octree_release\-lpcl_outofcore_release\-lpcl_people_release\-lpcl_recognition_release\-lpcl_registration_release\-lpcl_sample_consensus_release\-lpcl_search_release\-lpcl_segmentation_release\-lpcl_stereo_release\-lpcl_surface_release\-lpcl_tracking_release\-lpcl_visualization_releaseLIBS -LD:\ProgramFiles\PCL\PCL1.9.1\3rdParty\Boost\lib\-llibboost_atomic-vc141-mt-x64-1_68\-llibboost_bzip2-vc141-mt-x64-1_68\-llibboost_chrono-vc141-mt-x64-1_68\-llibboost_container-vc141-mt-x64-1_68\-llibboost_context-vc141-mt-x64-1_68\-llibboost_coroutine-vc141-mt-x64-1_68\-llibboost_date_time-vc141-mt-x64-1_68\-llibboost_exception-vc141-mt-x64-1_68\-llibboost_fiber-vc141-mt-x64-1_68\-llibboost_filesystem-vc141-mt-x64-1_68\-llibboost_graph-vc141-mt-x64-1_68\-llibboost_graph_parallel-vc141-mt-x64-1_68\-llibboost_iostreams-vc141-mt-x64-1_68\-llibboost_locale-vc141-mt-x64-1_68\-llibboost_log-vc141-mt-x64-1_68\-llibboost_log_setup-vc141-mt-x64-1_68\-llibboost_math_c99-vc141-mt-x64-1_68\-llibboost_math_c99f-vc141-mt-x64-1_68\-llibboost_math_c99l-vc141-mt-x64-1_68\-llibboost_math_tr1-vc141-mt-x64-1_68\-llibboost_math_tr1f-vc141-mt-x64-1_68\-llibboost_math_tr1l-vc141-mt-x64-1_68\-llibboost_mpi-vc141-mt-x64-1_68\-llibboost_numpy27-vc141-mt-x64-1_68\-llibboost_numpy37-vc141-mt-x64-1_68\-llibboost_prg_exec_monitor-vc141-mt-x64-1_68\-llibboost_program_options-vc141-mt-x64-1_68\-llibboost_python27-vc141-mt-x64-1_68\-llibboost_python37-vc141-mt-x64-1_68\-llibboost_random-vc141-mt-x64-1_68\-llibboost_regex-vc141-mt-x64-1_68\-llibboost_serialization-vc141-mt-x64-1_68\-llibboost_signals-vc141-mt-x64-1_68\-llibboost_system-vc141-mt-x64-1_68\-llibboost_test_exec_monitor-vc141-mt-x64-1_68\-llibboost_thread-vc141-mt-x64-1_68\-llibboost_timer-vc141-mt-x64-1_68\-llibboost_type_erasure-vc141-mt-x64-1_68\-llibboost_unit_test_framework-vc141-mt-x64-1_68\-llibboost_wave-vc141-mt-x64-1_68\-llibboost_wserialization-vc141-mt-x64-1_68\-llibboost_zlib-vc141-mt-x64-1_68LIBS -LD:\ProgramFiles\PCL\PCL1.9.1\3rdParty\FLANN\lib\-lflann\-lflann_cpp\-lflann_cpp_s\-lflann_sLIBS -LD:\ProgramFiles\PCL\PCL1.9.1\3rdParty\OpenNI2\Lib\ -lOpenNI2LIBS -LD:\ProgramFiles\PCL\PCL1.9.1\3rdParty\Qhull\lib\-lqhull\-lqhullcpp\-lqhullstatic\-lqhullstatic_r\-lqhull_p\-lqhull_rLIBS -LD:\ProgramFiles\VTK\VTK811\install\release\lib\-lvtkalglib-8.1\-lvtkChartsCore-8.1\-lvtkCommonColor-8.1\-lvtkCommonComputationalGeometry-8.1\-lvtkCommonCore-8.1\-lvtkCommonDataModel-8.1\-lvtkCommonExecutionModel-8.1\-lvtkCommonMath-8.1\-lvtkCommonMisc-8.1\-lvtkCommonSystem-8.1\-lvtkCommonTransforms-8.1\-lvtkDICOMParser-8.1\-lvtkDomainsChemistry-8.1\-lvtkexoIIc-8.1\-lvtkexpat-8.1\-lvtkFiltersAMR-8.1\-lvtkFiltersCore-8.1\-lvtkFiltersExtraction-8.1\-lvtkFiltersFlowPaths-8.1\-lvtkFiltersGeneral-8.1\-lvtkFiltersGeneric-8.1\-lvtkFiltersGeometry-8.1\-lvtkFiltersHybrid-8.1\-lvtkFiltersHyperTree-8.1\-lvtkFiltersImaging-8.1\-lvtkFiltersModeling-8.1\-lvtkFiltersParallel-8.1\-lvtkFiltersParallelImaging-8.1\-lvtkFiltersPoints-8.1\-lvtkFiltersProgrammable-8.1\-lvtkFiltersSelection-8.1\-lvtkFiltersSMP-8.1\-lvtkFiltersSources-8.1\-lvtkFiltersStatistics-8.1\-lvtkFiltersTexture-8.1\-lvtkFiltersTopology-8.1\-lvtkFiltersVerdict-8.1\-lvtkfreetype-8.1\-lvtkGeovisCore-8.1\-lvtkgl2ps-8.1\-lvtkglew-8.1\-lvtkGUISupportQt-8.1\-lvtkGUISupportQtSQL-8.1\-lvtkhdf5-8.1\-lvtkhdf5_hl-8.1\-lvtkImagingColor-8.1\-lvtkImagingCore-8.1\-lvtkImagingFourier-8.1\-lvtkImagingGeneral-8.1\-lvtkImagingHybrid-8.1\-lvtkImagingMath-8.1\-lvtkImagingMorphological-8.1\-lvtkImagingSources-8.1\-lvtkImagingStatistics-8.1\-lvtkImagingStencil-8.1\-lvtkInfovisCore-8.1\-lvtkInfovisLayout-8.1\-lvtkInteractionImage-8.1\-lvtkInteractionStyle-8.1\-lvtkInteractionWidgets-8.1\-lvtkIOAMR-8.1\-lvtkIOCore-8.1\-lvtkIOEnSight-8.1\-lvtkIOExodus-8.1\-lvtkIOExport-8.1\-lvtkIOExportOpenGL2-8.1\-lvtkIOGeometry-8.1\-lvtkIOImage-8.1\-lvtkIOImport-8.1\-lvtkIOInfovis-8.1\-lvtkIOLegacy-8.1\-lvtkIOLSDyna-8.1\-lvtkIOMINC-8.1\-lvtkIOMovie-8.1\-lvtkIONetCDF-8.1\-lvtkIOParallel-8.1\-lvtkIOParallelXML-8.1\-lvtkIOPLY-8.1\-lvtkIOSQL-8.1\-lvtkIOTecplotTable-8.1\-lvtkIOVideo-8.1\-lvtkIOXML-8.1\-lvtkIOXMLParser-8.1\-lvtkjpeg-8.1\-lvtkjsoncpp-8.1\-lvtklibharu-8.1\-lvtklibxml2-8.1\-lvtklz4-8.1\-lvtkmetaio-8.1\-lvtkNetCDF-8.1\-lvtknetcdfcpp-8.1\-lvtkoggtheora-8.1\-lvtkParallelCore-8.1\-lvtkpng-8.1\-lvtkproj4-8.1\-lvtkRenderingAnnotation-8.1\-lvtkRenderingContext2D-8.1\-lvtkRenderingContextOpenGL2-8.1\-lvtkRenderingCore-8.1\-lvtkRenderingFreeType-8.1\-lvtkRenderingGL2PSOpenGL2-8.1\-lvtkRenderingImage-8.1\-lvtkRenderingLabel-8.1\-lvtkRenderingLOD-8.1\-lvtkRenderingOpenGL2-8.1\-lvtkRenderingQt-8.1\-lvtkRenderingVolume-8.1\-lvtkRenderingVolumeOpenGL2-8.1\-lvtksqlite-8.1\-lvtksys-8.1\-lvtktiff-8.1\-lvtkverdict-8.1\-lvtkViewsContext2D-8.1\-lvtkViewsCore-8.1\-lvtkViewsInfovis-8.1\-lvtkViewsQt-8.1\-lvtkzlib-8.1\}(三)测试代码 #include widget.h
#include ui_widget.h#include QDebug#include pcl/io/io.h
#include pcl/io/pcd_io.h
#include pcl/io/obj_io.h
#include pcl/PolygonMesh.h
#include pcl/point_cloud.h
#include pcl/io/vtk_lib_io.h//loadPolygonFileOBJ所属头文件
#include pcl/visualization/pcl_visualizer.hWidget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui-setupUi(this);std::string fileName E:/wokspace/PROJECT/3D_visualization_platform/pcl_data/20210507111715441.pcd;//std::string fileName chahu.obj;pcl::PolygonMesh meshData;//读取原始数据pcl::io::loadPolygonFile(fileName,meshData);pcl::PointCloudpcl::PointXYZ::Ptr cloud;cloud.reset(new pcl::PointCloudpcl::PointXYZ);pcl::fromPCLPointCloud2(meshData.cloud, *cloud);//将obj数据转换为点云数据// 显示结果图boost::shared_ptrpcl::visualization::PCLVisualizer viewer (new pcl::visualization::PCLVisualizer (3D Viewer));viewer-setBackgroundColor (0, 0, 0); //设置背景viewer-addCoordinateSystem (15.0); //设置坐标系viewer-initCameraParameters ();viewer-addPointCloud(cloud, show);while (!viewer-wasStopped()){viewer-spinOnce (100);boost::this_thread::sleep (boost::posix_time::microseconds (100000));}qDebug()shuchu jieshu;}Widget::~Widget()
{delete ui;
}
debug程序启动的时候比较慢要耐心等待一下最终会弹出点云图 八、Qt-VTK测试
(一)pro配置
配置如七(二)中所示 (二)代码
头文件
#ifndef WIDGET_H
#define WIDGET_H#include QWidget#include QFileDialog//#include vtkAutoInit.h
//VTK_MODULE_INIT(vtkRenderingOpenGL2)
//VTK_MODULE_INIT(vtkInteractionStyle)#include pcl/point_cloud.h
#include pcl/point_types.h
#include pcl/visualization/pcl_visualizer.h
#include pcl/io/pcd_io.h
#include QVTKWidget.h
#include vtkRenderWindow.hQT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent nullptr);~Widget();void initialOPVtkWidget();QVTKWidget *mVTKWidget;boost::shared_ptrpcl::visualization::PCLVisualizer viewer;public slots:void showpoint();private slots:void on_pushButton_clicked();private:Ui::Widget *ui;};
#endif // WIDGET_Hcpp
#include widget.h
#include ui_widget.h#include QDebug#include vtkAutoInit.h
#include pcl/filters/radius_outlier_removal.h
#include pcl/filters/conditional_removal.h
#include pcl/io/pcd_io.h
#include QTimer
#include QHBoxLayout
#include QVBoxLayout
#include QTimer
#include vtkOutputWindow.h //消除vtk警告窗口的VTK_MODULE_INIT(vtkRenderingOpenGL2); //必须位opengl2
VTK_MODULE_INIT(vtkInteractionStyle);
pcl::PointCloudpcl::PointXYZ::Ptr cloud(new pcl::PointCloudpcl::PointXYZ());Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui-setupUi(this);initialOPVtkWidget();mVTKWidget new QVTKWidget(this);QVBoxLayout *layout new QVBoxLayout(this);layout-addWidget(mVTKWidget);QSizePolicy sizePolicy1(QSizePolicy::Preferred, QSizePolicy::Preferred);sizePolicy1.setHorizontalStretch(0);sizePolicy1.setVerticalStretch(0);sizePolicy1.setHeightForWidth(mVTKWidget-sizePolicy().hasHeightForWidth());mVTKWidget-setSizePolicy(sizePolicy1);//设置vtk视图大小mVTKWidget-setMinimumSize(QSize(1200, 800));mVTKWidget-showFullScreen();viewer.reset(new pcl::visualization::PCLVisualizer(viewer, false));//初始化viewermVTKWidget-SetRenderWindow(viewer-getRenderWindow());//关联鼠标事件viewer-setupInteractor(mVTKWidget-GetInteractor(), mVTKWidget-GetRenderWindow());//设置显示部件viewer-addPointCloud(cloud, cloud);viewer-addCoordinateSystem(383);viewer-setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 1.3, cloud);pcl::PointXYZ p;for (int i 0; i 100; i) {p.x rand() % 100;p.y rand() % 100;p.z rand() % 100;cloud-push_back(p);}viewer-updatePointCloudpcl::PointXYZ(cloud, cloud);mVTKWidget-update();QTimer *time new QTimer(this);connect(time, SIGNAL(timeout()), this, SLOT(showpoint()));time-start(50);
}Widget::~Widget()
{delete ui;
}void Widget::initialOPVtkWidget()
{cloud.reset(new pcl::PointCloudpcl::PointXYZ);viewer.reset(new pcl::visualization::PCLVisualizer(viewer, false));viewer-addPointCloud(cloud, cloud);//消除vtk警告输出窗口vtkOutputWindow::SetGlobalWarningDisplay(0);//对应头文件#include vtkOutputWindow.h}void Widget::on_pushButton_clicked()
{onOpen();
}//原文链接https://blog.csdn.net/qq_34512507/article/details/100991932
void Widget::showpoint()
{cloud-clear();pcl::PointXYZ p;for (int i 0; i 100; i) {p.x rand() % 100;p.y rand() % 100;p.z rand() % 100;cloud-push_back(p);}viewer-updatePointCloudpcl::PointXYZ(cloud, cloud);mVTKWidget-update();
} 参考
10分钟配好vs2017pcl1.9.1vtk8.1qt5.9点云环境配置_点睡的博客-CSDN博客https://blog.csdn.net/qq_34512507/article/details/100991932
(三)消除vtk警告窗口
运行程序时除了弹出主窗口还会弹出一个关于VTK的警告窗口添加如下代码可关闭窗口
#include vtkOutputWindow.h//消除vtk警告输出窗口
vtkOutputWindow::SetGlobalWarningDisplay(0);//必须得添加头文件才行 (四)出现的问题
1.widget.obj:-1: error: LNK2001: 无法解析的外部符号 void __cdecl vtkRenderingOpenGL_AutoInit_Construct(void) (?vtkRenderingOpenGL_AutoInit_ConstructYAXXZ)
vtkRenderingOpenGL 这个再代码中一查发现头文件中添加了VTK_MODULE_INIT(vtkRenderingOpenGL)
但我的库中是vtkRenderingOpenGL2
后面改为VTK_MODULE_INIT(vtkRenderingOpenGL2) 2. 概要信息中提示的错误
2023-08-03T16:24:32 Clang Code Model: Error: The clangbackend process has finished unexpectedly and was restarted. 参考
Qt通过QVTKWidget显示VTK交互窗口_FRED618的博客-CSDN博客https://blog.csdn.net/qq_37441588/article/details/118677431