Windows系统中基于PCL的Qt开发环境详细配置教程

目录

配置环境所需软件

一.安装PCL

二.安装Qt

三.安装VS

四.安装CMake

五.下载VTK

六.编译VTK

七.配置Qt

八.程序测试


配置环境所需软件

为了配置环境,需要安装以下软件:PCL(点云库),Qt(跨平台GUI框架),VS(Visual Studio,集成开发环境),VTK(可视化工具包),以及CMake(交叉平台的自动化构建工具)

一.安装PCL

首先进入PCL的Github中Releases页面Releases · PointCloudLibrary/pcl (github.com)icon-default.png?t=N7T8https://github.com/PointCloudLibrary/pcl/releases

进入后下载此文件5d17ec4488af42dea6c138ae2e56401a.png

这里默认选择第二个为所有用户添加到system Pathe419ed85779b43e288e8ffb0bff938db.png

这里3rd Party Libraries 是第三方库,默认勾选efeabe25b66d4f0b86a979bce29847f4.png

二.安装Qt

Qt需要用官方安装器在线下载,所以我们首先要下载官方安装器,官网下载较慢,因此推荐用清华源镜像站下载Index of /qt/archive/online_installers/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirroricon-default.png?t=N7T8https://mirrors.tuna.tsinghua.edu.cn/qt/archive/online_installers/

选择最新版进行下载cce77b75ea0d40c0990b57f35651e258.png

若没有账号则点击注册1134e850f870452c92777128c7a36bd5.png

这里选择自定义安装e80d2696753349a9a629b5d4502a8ad9.png

默认选项不用处理,勾选Qt最新版即可783f6c41ce094f57a562bc7a77f467aa.png

三.安装VS

首先进入官网进行下载下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux (microsoft.com)icon-default.png?t=N7T8https://visualstudio.microsoft.com/zh-hans/downloads/

52a43e4177e84d62b867bf1e802702df.png

选择C++桌面开发,默认选项不用处理,在右侧的Windows SDK中选择适合自己系统的SDK17f3995c720e4315a3aef52da7bf133a.png

四.安装CMake

首先进入官网下载,选择.msi文件Download CMakeicon-default.png?t=N7T8https://cmake.org/download/

434a895cfa884616912faa1874d55a25.png

这里同样选择为所有用户添加到system Path

7f013ce7a86a4850aa38cbbbb911c9b9.png

五.下载VTK

打开PCL目录,可以看到已含有编译好的VTK库,但是其中不含和Qt联合编译生成的用来显示点云的库文件,所以需要我们单独编译VTK。

首先查看PCL中VTK文件夹里任意文件名中的版本号

bb7b399d5eae4736bd8469725e4e0583.png

可以看到版本为9.2,单独下载的VTK文件需与PCL自带的一致,那么接下来我们去官网下载对应版本的zip文件

标签 · VTK / VTK · GitLab (kitware.com)icon-default.png?t=N7T8https://gitlab.kitware.com/vtk/vtk/-/tagsb2786f07e9e148c0b4077c233bec4d94.png

下载好后解压缩到文件夹

7a5a1889a3844b90845610cec8bb8e80.png

六.编译VTK

首先创建两个文件夹,分别名为vtk-install和vtk-prefix,其中vtk-install是CMake编译后生成VS解决方案的文件夹,vtk-prefix是存放VS编译后所生成文件,也就是我们所需要的库文件2a1db0e34fc4424f81c66de9fccacc48.png

接下来使用CMake编译项目,选择目录,然后点击Add Entry按钮添加缓存变量,名称为CMAKE_DEBUG_POSTFIX,类型为 STRING,值设置为 -gd,之后点击Configure

这里默认选择VS2022,x64,第三个不用填,然后点击Finish,等待编译完成846cf05cc3ef40f6b559fa4ba897405a.png

编译完成后在CMAKE_INSTALL_PREFIX选择自己的vtk-prefix文件夹

勾选Grouped和Advanced,中搜索QT,将所有与QT相关的选项设置为WANT,然后点击Configure

这时会报错,我们选择Qt目录中的CMake文件夹,然后再次点击Configure

再次报错,不用处理,继续点击Configure

现在没有报红,点击Generate后等待出现此提示b77408af83d849f683fbce15d3f092b6.png

找到vtk-install文件夹,可以发现有一个VTK.sln,我们用VS打开cd15e51bb94a4a2982c9f254089e99d6.png

打开VS后进入此界面,点击此处将Debug更改为Releaseb5ec32f9958747849d88c610b90e2c13.png

右键点击解决方案,选择生成解决方案,等待完成68ad15e2af0b4fc6958df21bb248ed1f.png

完成后找到INSTALL,右键点击,首先点击设为启动项目,然后点击生成cb4609cc18fd4f73b8832bca65227fd6.png

最后vtk-prefix就出现了我们需要的文件a7268e89649643a59344f78bebc8a4ce.png

最后再如上再生成一次Debug版本的项目

七.配置Qt

首先,我们要将vtk-prefix里的文件夹全部复制到PCL的VTK文件夹中,重名则跳过acddce65796c4829bfcea360aa41df45.png

打开Qt新建项目c0f95694542848f6b76102a63e531a8c.png

注意编译器要选择MSVCc5d7d947e38149c29005d673fb950215.png

编辑项目的.pro文件,将以下的内容添加到其中,将PCL的路径根据自身情况修改

INCLUDEPATH += 'D:/PCL 1.13.1/include/pcl-1.13/'

INCLUDEPATH += 'D:/PCL 1.13.1/3rdParty/Boost/include/boost-1_82/'

INCLUDEPATH += 'D:/PCL 1.13.1/3rdParty/Eigen/eigen3/'

INCLUDEPATH += 'D:/PCL 1.13.1/3rdParty/FLANN/include/'

INCLUDEPATH += 'D:/PCL 1.13.1/3rdParty/OpenNI2/Include/'

INCLUDEPATH += 'D:/PCL 1.13.1/3rdParty/Qhull/include/'

INCLUDEPATH += 'D:/PCL 1.13.1/3rdParty/VTK/include/vtk-9.2/'

另外还需分Debug和Release分别添加PCL包含的所有LIBS,其中'-L'后面接文件夹目录,各行首的'-l'后面接不含后缀的文件名,各行尾的'\'表示连接下一行,注意每个目录中最后一个文件末尾不含'\',其中带d或gd的为Debug版本,其它为Release版本

共有如下几个目录需要添加

LIBS += -L'D:\PCL 1.13.1\lib'\

LIBS += -L'D:\PCL 1.13.1\3rdParty/Boost\lib'\

LIBS += -L'D:\PCL 1.13.1\3rdParty\FLANN\lib'\

LIBS += -L'D:\PCL 1.13.1\3rdParty\Qhull\lib'\

LIBS += -L'D:\PCL 1.13.1\3rdParty\OpenNI2\Lib'\

LIBS += -L'D:\PCL 1.13.1\3rdParty\VTK\lib'\

库文件的数量很多,明显我们不能手动去一个一个地输入,这时要用到批处理命令。新建txt文件,将如下代码复制到其中,然后更改后缀为.bat,将此文件复制到上面的目录中,双击运行即可自动格式化输出文件夹中所有文件名到该目录下的output.txt,注意最后一个文件末尾的'\'应手动删除,在这之前为了区分Debug和Release版本我们可以先从文件夹中手动移出Debug版本,然后各生成结束后再放回

@echo off
setlocal enabledelayedexpansion

rem 设置目标文件名
set "outputFile=output.txt"

rem 清空或创建输出文件
type nul > "%outputFile%"

rem 遍历当前目录下的所有以".lib"结尾的文件
set isFirstFile=0
for %%f in (*.lib) do (
  set "filename=%%~nf"
  echo -l!filename!\>> "%outputFile%"
)

endlocal

最后需要添加的配置示例如下:

QT       += openglwidgets

INCLUDEPATH += 'D:/PCL 1.13.1/include/pcl-1.13/'

INCLUDEPATH += 'D:/PCL 1.13.1/3rdParty/Boost/include/boost-1_82/'

INCLUDEPATH += 'D:/PCL 1.13.1/3rdParty/Eigen/eigen3/'

INCLUDEPATH += 'D:/PCL 1.13.1/3rdParty/FLANN/include/'

INCLUDEPATH += 'D:/PCL 1.13.1/3rdParty/OpenNI2/Include/'

INCLUDEPATH += 'D:/PCL 1.13.1/3rdParty/Qhull/include/'

INCLUDEPATH += 'D:/PCL 1.13.1/3rdParty/VTK/include/vtk-9.2/'

CONFIG += debug_and_release

CONFIG(debug, debug|release){
LIBS += -L'D:\PCL 1.13.1\lib'\
-lpcl_commond\
-lpcl_featuresd\
-lpcl_filtersd\
-lpcl_iod\
-lpcl_io_plyd\
-lpcl_kdtreed\
-lpcl_keypointsd\
-lpcl_mld\
-lpcl_octreed\
-lpcl_outofcored\
-lpcl_peopled\
-lpcl_recognitiond\
-lpcl_registrationd\
-lpcl_sample_consensusd\
-lpcl_searchd\
-lpcl_segmentationd\
-lpcl_stereod\
-lpcl_surfaced\
-lpcl_trackingd\
-lpcl_visualizationd

LIBS += -L'D:\PCL 1.13.1\3rdParty/Boost\lib'\
-llibboost_atomic-vc143-mt-gd-x64-1_82\
-llibboost_bzip2-vc143-mt-gd-x64-1_82\
-llibboost_chrono-vc143-mt-gd-x64-1_82\
-llibboost_container-vc143-mt-gd-x64-1_82\
-llibboost_context-vc143-mt-gd-x64-1_82\
-llibboost_contract-vc143-mt-gd-x64-1_82\
-llibboost_coroutine-vc143-mt-gd-x64-1_82\
-llibboost_date_time-vc143-mt-gd-x64-1_82\
-llibboost_exception-vc143-mt-gd-x64-1_82\
-llibboost_fiber-vc143-mt-gd-x64-1_82\
-llibboost_filesystem-vc143-mt-gd-x64-1_82\
-llibboost_graph-vc143-mt-gd-x64-1_82\
-llibboost_graph_parallel-vc143-mt-gd-x64-1_82\
-llibboost_iostreams-vc143-mt-gd-x64-1_82\
-llibboost_json-vc143-mt-gd-x64-1_82\
-llibboost_locale-vc143-mt-gd-x64-1_82\
-llibboost_log-vc143-mt-gd-x64-1_82\
-llibboost_log_setup-vc143-mt-gd-x64-1_82\
-llibboost_math_c99-vc143-mt-gd-x64-1_82\
-llibboost_math_c99f-vc143-mt-gd-x64-1_82\
-llibboost_math_c99l-vc143-mt-gd-x64-1_82\
-llibboost_math_tr1-vc143-mt-gd-x64-1_82\
-llibboost_math_tr1f-vc143-mt-gd-x64-1_82\
-llibboost_math_tr1l-vc143-mt-gd-x64-1_82\
-llibboost_mpi-vc143-mt-gd-x64-1_82\
-llibboost_nowide-vc143-mt-gd-x64-1_82\
-llibboost_numpy310-vc143-mt-gd-x64-1_82\
-llibboost_prg_exec_monitor-vc143-mt-gd-x64-1_82\
-llibboost_program_options-vc143-mt-gd-x64-1_82\
-llibboost_python310-vc143-mt-gd-x64-1_82\
-llibboost_random-vc143-mt-gd-x64-1_82\
-llibboost_regex-vc143-mt-gd-x64-1_82\
-llibboost_serialization-vc143-mt-gd-x64-1_82\
-llibboost_stacktrace_noop-vc143-mt-gd-x64-1_82\
-llibboost_stacktrace_windbg-vc143-mt-gd-x64-1_82\
-llibboost_stacktrace_windbg_cached-vc143-mt-gd-x64-1_82\
-llibboost_system-vc143-mt-gd-x64-1_82\
-llibboost_test_exec_monitor-vc143-mt-gd-x64-1_82\
-llibboost_thread-vc143-mt-gd-x64-1_82\
-llibboost_timer-vc143-mt-gd-x64-1_82\
-llibboost_type_erasure-vc143-mt-gd-x64-1_82\
-llibboost_unit_test_framework-vc143-mt-gd-x64-1_82\
-llibboost_url-vc143-mt-gd-x64-1_82\
-llibboost_wave-vc143-mt-gd-x64-1_82\
-llibboost_wserialization-vc143-mt-gd-x64-1_82\
-llibboost_zlib-vc143-mt-gd-x64-1_82

LIBS += -L'D:\PCL 1.13.1\3rdParty\FLANN\lib'\
-lflann-gd\
-lflann_cpp-gd\
-lflann_cpp_s-gd\
-lflann_s-gd

LIBS += -L'D:\PCL 1.13.1\3rdParty\Qhull\lib'\
-lqhullcpp_d\
-lqhullstatic_d\
-lqhullstatic_rd\
-lqhull_rd

LIBS += -L'D:\PCL 1.13.1\3rdParty\OpenNI2\Lib'\
-lOpenNI2

LIBS += -L'D:\PCL 1.13.1\3rdParty\VTK\lib'\
-lvtkcgns-9.2-gd\
-lvtkChartsCore-9.2-gd\
-lvtkCommonColor-9.2-gd\
-lvtkCommonComputationalGeometry-9.2-gd\
-lvtkCommonCore-9.2-gd\
-lvtkCommonDataModel-9.2-gd\
-lvtkCommonExecutionModel-9.2-gd\
-lvtkCommonMath-9.2-gd\
-lvtkCommonMisc-9.2-gd\
-lvtkCommonSystem-9.2-gd\
-lvtkCommonTransforms-9.2-gd\
-lvtkDICOMParser-9.2-gd\
-lvtkDomainsChemistry-9.2-gd\
-lvtkDomainsChemistryOpenGL2-9.2-gd\
-lvtkdoubleconversion-9.2-gd\
-lvtkexodusII-9.2-gd\
-lvtkexpat-9.2-gd\
-lvtkFiltersAMR-9.2-gd\
-lvtkFiltersCore-9.2-gd\
-lvtkFiltersExtraction-9.2-gd\
-lvtkFiltersFlowPaths-9.2-gd\
-lvtkFiltersGeneral-9.2-gd\
-lvtkFiltersGeneric-9.2-gd\
-lvtkFiltersGeometry-9.2-gd\
-lvtkFiltersHybrid-9.2-gd\
-lvtkFiltersHyperTree-9.2-gd\
-lvtkFiltersImaging-9.2-gd\
-lvtkFiltersModeling-9.2-gd\
-lvtkFiltersParallel-9.2-gd\
-lvtkFiltersParallelImaging-9.2-gd\
-lvtkFiltersPoints-9.2-gd\
-lvtkFiltersProgrammable-9.2-gd\
-lvtkFiltersSelection-9.2-gd\
-lvtkFiltersSMP-9.2-gd\
-lvtkFiltersSources-9.2-gd\
-lvtkFiltersStatistics-9.2-gd\
-lvtkFiltersTexture-9.2-gd\
-lvtkFiltersTopology-9.2-gd\
-lvtkFiltersVerdict-9.2-gd\
-lvtkfmt-9.2-gd\
-lvtkfreetype-9.2-gd\
-lvtkGeovisCore-9.2-gd\
-lvtkgl2ps-9.2-gd\
-lvtkglew-9.2-gd\
-lvtkGUISupportQt-9.2-gd\
-lvtkhdf5-9.2-gd\
-lvtkhdf5_hl-9.2-gd\
-lvtkImagingColor-9.2-gd\
-lvtkImagingCore-9.2-gd\
-lvtkImagingFourier-9.2-gd\
-lvtkImagingGeneral-9.2-gd\
-lvtkImagingHybrid-9.2-gd\
-lvtkImagingMath-9.2-gd\
-lvtkImagingMorphological-9.2-gd\
-lvtkImagingSources-9.2-gd\
-lvtkImagingStatistics-9.2-gd\
-lvtkImagingStencil-9.2-gd\
-lvtkInfovisCore-9.2-gd\
-lvtkInfovisLayout-9.2-gd\
-lvtkInteractionImage-9.2-gd\
-lvtkInteractionStyle-9.2-gd\
-lvtkInteractionWidgets-9.2-gd\
-lvtkIOAMR-9.2-gd\
-lvtkIOAsynchronous-9.2-gd\
-lvtkIOCesium3DTiles-9.2-gd\
-lvtkIOCGNSReader-9.2-gd\
-lvtkIOChemistry-9.2-gd\
-lvtkIOCityGML-9.2-gd\
-lvtkIOCONVERGECFD-9.2-gd\
-lvtkIOCore-9.2-gd\
-lvtkIOEnSight-9.2-gd\
-lvtkIOExodus-9.2-gd\
-lvtkIOExport-9.2-gd\
-lvtkIOExportGL2PS-9.2-gd\
-lvtkIOExportPDF-9.2-gd\
-lvtkIOGeometry-9.2-gd\
-lvtkIOHDF-9.2-gd\
-lvtkIOImage-9.2-gd\
-lvtkIOImport-9.2-gd\
-lvtkIOInfovis-9.2-gd\
-lvtkIOIOSS-9.2-gd\
-lvtkIOLegacy-9.2-gd\
-lvtkIOLSDyna-9.2-gd\
-lvtkIOMINC-9.2-gd\
-lvtkIOMotionFX-9.2-gd\
-lvtkIOMovie-9.2-gd\
-lvtkIONetCDF-9.2-gd\
-lvtkIOOggTheora-9.2-gd\
-lvtkIOParallel-9.2-gd\
-lvtkIOParallelXML-9.2-gd\
-lvtkIOPLY-9.2-gd\
-lvtkIOSegY-9.2-gd\
-lvtkIOSQL-9.2-gd\
-lvtkioss-9.2-gd\
-lvtkIOTecplotTable-9.2-gd\
-lvtkIOVeraOut-9.2-gd\
-lvtkIOVideo-9.2-gd\
-lvtkIOXML-9.2-gd\
-lvtkIOXMLParser-9.2-gd\
-lvtkjpeg-9.2-gd\
-lvtkjsoncpp-9.2-gd\
-lvtkkissfft-9.2-gd\
-lvtklibharu-9.2-gd\
-lvtklibproj-9.2-gd\
-lvtklibxml2-9.2-gd\
-lvtkloguru-9.2-gd\
-lvtklz4-9.2-gd\
-lvtklzma-9.2-gd\
-lvtkmetaio-9.2-gd\
-lvtknetcdf-9.2-gd\
-lvtkogg-9.2-gd\
-lvtkParallelCore-9.2-gd\
-lvtkParallelDIY-9.2-gd\
-lvtkpng-9.2-gd\
-lvtkpugixml-9.2-gd\
-lvtkRenderingAnnotation-9.2-gd\
-lvtkRenderingContext2D-9.2-gd\
-lvtkRenderingContextOpenGL2-9.2-gd\
-lvtkRenderingCore-9.2-gd\
-lvtkRenderingFreeType-9.2-gd\
-lvtkRenderingGL2PSOpenGL2-9.2-gd\
-lvtkRenderingHyperTreeGrid-9.2-gd\
-lvtkRenderingImage-9.2-gd\
-lvtkRenderingLabel-9.2-gd\
-lvtkRenderingLICOpenGL2-9.2-gd\
-lvtkRenderingLOD-9.2-gd\
-lvtkRenderingOpenGL2-9.2-gd\
-lvtkRenderingQt-9.2-gd\
-lvtkRenderingSceneGraph-9.2-gd\
-lvtkRenderingUI-9.2-gd\
-lvtkRenderingVolume-9.2-gd\
-lvtkRenderingVolumeOpenGL2-9.2-gd\
-lvtkRenderingVtkJS-9.2-gd\
-lvtksqlite-9.2-gd\
-lvtksys-9.2-gd\
-lvtkTestingRendering-9.2-gd\
-lvtktheora-9.2-gd\
-lvtktiff-9.2-gd\
-lvtkverdict-9.2-gd\
-lvtkViewsContext2D-9.2-gd\
-lvtkViewsCore-9.2-gd\
-lvtkViewsInfovis-9.2-gd\
-lvtkViewsQt-9.2-gd\
-lvtkWrappingTools-9.2-gd\
-lvtkzlib-9.2-gd
} else {
LIBS += -L'D:\PCL 1.13.1\lib'\
-lpcl_common\
-lpcl_features\
-lpcl_filters\
-lpcl_io\
-lpcl_iod\
-lpcl_io_ply\
-lpcl_kdtree\
-lpcl_keypoints\
-lpcl_ml\
-lpcl_octree\
-lpcl_outofcore\
-lpcl_people\
-lpcl_recognition\
-lpcl_registration\
-lpcl_sample_consensus\
-lpcl_search\
-lpcl_segmentation\
-lpcl_stereo\
-lpcl_surface\
-lpcl_tracking\
-lpcl_visualization

LIBS += -L'D:\PCL 1.13.1\3rdParty/Boost\lib'\
-llibboost_atomic-vc143-mt-x64-1_82\
-llibboost_bzip2-vc143-mt-x64-1_82\
-llibboost_chrono-vc143-mt-x64-1_82\
-llibboost_container-vc143-mt-x64-1_82\
-llibboost_context-vc143-mt-x64-1_82\
-llibboost_contract-vc143-mt-x64-1_82\
-llibboost_coroutine-vc143-mt-x64-1_82\
-llibboost_date_time-vc143-mt-x64-1_82\
-llibboost_exception-vc143-mt-x64-1_82\
-llibboost_fiber-vc143-mt-x64-1_82\
-llibboost_filesystem-vc143-mt-x64-1_82\
-llibboost_graph-vc143-mt-x64-1_82\
-llibboost_graph_parallel-vc143-mt-x64-1_82\
-llibboost_iostreams-vc143-mt-x64-1_82\
-llibboost_json-vc143-mt-x64-1_82\
-llibboost_locale-vc143-mt-x64-1_82\
-llibboost_log-vc143-mt-x64-1_82\
-llibboost_log_setup-vc143-mt-x64-1_82\
-llibboost_math_c99-vc143-mt-x64-1_82\
-llibboost_math_c99f-vc143-mt-x64-1_82\
-llibboost_math_c99l-vc143-mt-x64-1_82\
-llibboost_math_tr1-vc143-mt-x64-1_82\
-llibboost_math_tr1f-vc143-mt-x64-1_82\
-llibboost_math_tr1l-vc143-mt-x64-1_82\
-llibboost_mpi-vc143-mt-x64-1_82\
-llibboost_nowide-vc143-mt-x64-1_82\
-llibboost_numpy310-vc143-mt-x64-1_82\
-llibboost_prg_exec_monitor-vc143-mt-x64-1_82\
-llibboost_program_options-vc143-mt-x64-1_82\
-llibboost_python310-vc143-mt-x64-1_82\
-llibboost_random-vc143-mt-x64-1_82\
-llibboost_regex-vc143-mt-x64-1_82\
-llibboost_serialization-vc143-mt-x64-1_82\
-llibboost_stacktrace_noop-vc143-mt-x64-1_82\
-llibboost_stacktrace_windbg-vc143-mt-x64-1_82\
-llibboost_stacktrace_windbg_cached-vc143-mt-x64-1_82\
-llibboost_system-vc143-mt-x64-1_82\
-llibboost_test_exec_monitor-vc143-mt-x64-1_82\
-llibboost_thread-vc143-mt-x64-1_82\
-llibboost_timer-vc143-mt-x64-1_82\
-llibboost_type_erasure-vc143-mt-x64-1_82\
-llibboost_unit_test_framework-vc143-mt-x64-1_82\
-llibboost_url-vc143-mt-x64-1_82\
-llibboost_wave-vc143-mt-x64-1_82\
-llibboost_wserialization-vc143-mt-x64-1_82\
-llibboost_zlib-vc143-mt-x64-1_82

LIBS += -L'D:\PCL 1.13.1\3rdParty\FLANN\lib'\
-lflann\
-lflann_cpp\
-lflann_cpp_s\
-lflann_s

LIBS += -L'D:\PCL 1.13.1\3rdParty\Qhull\lib'\
-lqhullcpp\
-lqhullstatic\
-lqhullstatic_r\
-lqhull_r

LIBS += -L'D:\PCL 1.13.1\3rdParty\OpenNI2\Lib'\
-lOpenNI2

LIBS += -L'D:\PCL 1.13.1\3rdParty\VTK\lib'\
-lvtkcgns-9.2\
-lvtkChartsCore-9.2\
-lvtkCommonColor-9.2\
-lvtkCommonComputationalGeometry-9.2\
-lvtkCommonCore-9.2\
-lvtkCommonDataModel-9.2\
-lvtkCommonExecutionModel-9.2\
-lvtkCommonMath-9.2\
-lvtkCommonMisc-9.2\
-lvtkCommonSystem-9.2\
-lvtkCommonTransforms-9.2\
-lvtkDICOMParser-9.2\
-lvtkDomainsChemistry-9.2\
-lvtkDomainsChemistryOpenGL2-9.2\
-lvtkdoubleconversion-9.2\
-lvtkexodusII-9.2\
-lvtkexpat-9.2\
-lvtkFiltersAMR-9.2\
-lvtkFiltersCore-9.2\
-lvtkFiltersExtraction-9.2\
-lvtkFiltersFlowPaths-9.2\
-lvtkFiltersGeneral-9.2\
-lvtkFiltersGeneric-9.2\
-lvtkFiltersGeometry-9.2\
-lvtkFiltersHybrid-9.2\
-lvtkFiltersHyperTree-9.2\
-lvtkFiltersImaging-9.2\
-lvtkFiltersModeling-9.2\
-lvtkFiltersParallel-9.2\
-lvtkFiltersParallelImaging-9.2\
-lvtkFiltersPoints-9.2\
-lvtkFiltersProgrammable-9.2\
-lvtkFiltersSelection-9.2\
-lvtkFiltersSMP-9.2\
-lvtkFiltersSources-9.2\
-lvtkFiltersStatistics-9.2\
-lvtkFiltersTexture-9.2\
-lvtkFiltersTopology-9.2\
-lvtkFiltersVerdict-9.2\
-lvtkfmt-9.2\
-lvtkfreetype-9.2\
-lvtkGeovisCore-9.2\
-lvtkgl2ps-9.2\
-lvtkglew-9.2\
-lvtkGUISupportQt-9.2\
-lvtkhdf5-9.2\
-lvtkhdf5_hl-9.2\
-lvtkImagingColor-9.2\
-lvtkImagingCore-9.2\
-lvtkImagingFourier-9.2\
-lvtkImagingGeneral-9.2\
-lvtkImagingHybrid-9.2\
-lvtkImagingMath-9.2\
-lvtkImagingMorphological-9.2\
-lvtkImagingSources-9.2\
-lvtkImagingStatistics-9.2\
-lvtkImagingStencil-9.2\
-lvtkInfovisCore-9.2\
-lvtkInfovisLayout-9.2\
-lvtkInteractionImage-9.2\
-lvtkInteractionStyle-9.2\
-lvtkInteractionWidgets-9.2\
-lvtkIOAMR-9.2\
-lvtkIOAsynchronous-9.2\
-lvtkIOCesium3DTiles-9.2\
-lvtkIOCGNSReader-9.2\
-lvtkIOChemistry-9.2\
-lvtkIOCityGML-9.2\
-lvtkIOCONVERGECFD-9.2\
-lvtkIOCore-9.2\
-lvtkIOEnSight-9.2\
-lvtkIOExodus-9.2\
-lvtkIOExport-9.2\
-lvtkIOExportGL2PS-9.2\
-lvtkIOExportPDF-9.2\
-lvtkIOGeometry-9.2\
-lvtkIOHDF-9.2\
-lvtkIOImage-9.2\
-lvtkIOImport-9.2\
-lvtkIOInfovis-9.2\
-lvtkIOIOSS-9.2\
-lvtkIOLegacy-9.2\
-lvtkIOLSDyna-9.2\
-lvtkIOMINC-9.2\
-lvtkIOMotionFX-9.2\
-lvtkIOMovie-9.2\
-lvtkIONetCDF-9.2\
-lvtkIOOggTheora-9.2\
-lvtkIOParallel-9.2\
-lvtkIOParallelXML-9.2\
-lvtkIOPLY-9.2\
-lvtkIOSegY-9.2\
-lvtkIOSQL-9.2\
-lvtkioss-9.2\
-lvtkIOTecplotTable-9.2\
-lvtkIOVeraOut-9.2\
-lvtkIOVideo-9.2\
-lvtkIOXML-9.2\
-lvtkIOXMLParser-9.2\
-lvtkjpeg-9.2\
-lvtkjsoncpp-9.2\
-lvtkkissfft-9.2\
-lvtklibharu-9.2\
-lvtklibproj-9.2\
-lvtklibxml2-9.2\
-lvtkloguru-9.2\
-lvtklz4-9.2\
-lvtklzma-9.2\
-lvtkmetaio-9.2\
-lvtknetcdf-9.2\
-lvtkogg-9.2\
-lvtkParallelCore-9.2\
-lvtkParallelDIY-9.2\
-lvtkpng-9.2\
-lvtkpugixml-9.2\
-lvtkRenderingAnnotation-9.2\
-lvtkRenderingContext2D-9.2\
-lvtkRenderingContextOpenGL2-9.2\
-lvtkRenderingCore-9.2\
-lvtkRenderingFreeType-9.2\
-lvtkRenderingGL2PSOpenGL2-9.2\
-lvtkRenderingHyperTreeGrid-9.2\
-lvtkRenderingImage-9.2\
-lvtkRenderingLabel-9.2\
-lvtkRenderingLICOpenGL2-9.2\
-lvtkRenderingLOD-9.2\
-lvtkRenderingOpenGL2-9.2\
-lvtkRenderingQt-9.2\
-lvtkRenderingSceneGraph-9.2\
-lvtkRenderingUI-9.2\
-lvtkRenderingVolume-9.2\
-lvtkRenderingVolumeOpenGL2-9.2\
-lvtkRenderingVtkJS-9.2\
-lvtksqlite-9.2\
-lvtksys-9.2\
-lvtkTestingRendering-9.2\
-lvtktheora-9.2\
-lvtktiff-9.2\
-lvtkverdict-9.2\
-lvtkViewsContext2D-9.2\
-lvtkViewsCore-9.2\
-lvtkViewsInfovis-9.2\
-lvtkViewsQt-9.2\
-lvtkWrappingTools-9.2\
-lvtkzlib-9.2
}

八.程序测试

首先下载点云模型并解压缩【免费】Rabbit兔子点云模型资源-CSDN文库icon-default.png?t=N7T8https://download.csdn.net/download/weixin_67559204/88497477

将如下代码复制到main.cpp文件中,修改模型的路径

#include <QCoreApplication>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/io/ply_io.h>
#include <pcl/visualization/cloud_viewer.h>
#include <pcl/kdtree/kdtree_flann.h>
#include <iostream>
using namespace std;
int main()
{
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
    if (pcl::io::loadPLYFile<pcl::PointXYZ>("E:/Qt/PclTest/rabbit.ply", *cloud) == -1) //* load the file
    {
        PCL_ERROR("Couldn't read file test_ply.ply \n");
        system("PAUSE");
        return (-1);
    }
    pcl::visualization::CloudViewer viewer("Viewer");
    viewer.showCloud(cloud);
    system("PAUSE");
    return (0);
}

选择Release模式运行18a0c3910f0c4f9c91ea2d16827c89b9.png

最后出现此界面即表示环境配置成功f9877a66061d4647a9430a88383e829e.png

完结撒花

  • 26
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
### 回答1: 1. 安装Visual Studio 2019 2. 下载VTK源代码,并使用CMake生成Visual Studio 2019的解决方案文件 3. 在Visual Studio 2019打开解决方案文件,并编译VTK 4. 下载Qt,并安装Qt Visual Studio Tools插件 5. 在Visual Studio 2019创建一个Qt项目,并将VTK库添加到项目 6. 下载PCL源代码,并使用CMake生成Visual Studio 2019的解决方案文件 7. 在Visual Studio 2019打开解决方案文件,并编译PCL 8. 在Qt项目使用PCL库 ### 回答2: vs2019是一款强大的集成开发工具,在科学计算和数据处理等领域有着广泛的应用。其,vtk、qtpcl是大型图形库和点云库,具有很高的专业性和复杂性。要想在vs2019成功配置这些库的环境,需要具备较高的技术实力和一定的耐心和毅力。 配置vtk环境 1. 下载vtk源码包,解压到本地目录。 2. 在vs2019新建空白c++项目,如MyVTK。 3. 在项目属性管理器,右键单击“全部配置”并选择“属性”。 4. 选择“VC++目录”,在“包含目录”添加vtk源码包的include目录,如“D:\VTK8.2.0\include\vtk-8.2”。 5. 在“库目录”,添加vtk源码包的lib目录,如“D:\VTK8.2.0\lib\Debug”。 6. 在“链接器”的“输入”,添加以下依赖库:vtkCommonCore-8.2d.lib、vtkFiltersSources-8.2d.lib、vtkRenderingOpenGL2-8.2d.lib、vtkIOImage-8.2d.lib、vtkInteractionStyle-8.2d.lib、vtkRenderingCore-8.2d.lib。 7. 在项目添加测试代码,并编译运行查看执行结果。 配置qt环境 1. 下载qt源码包,在vs2019新建qt控制台程序项目。 2. 在Qt Creator,打开项目属性,选择“构建与运行”。 3. 选择“编译环境”,确保设置了正确的Qt版本。 4. 对于动态链接,需要在“连接”添加Qt库,如QT += core gui widgets等。 5. 对于静态链接,需要在项目属性下的“C/C++,添加“头文件路径”和“源文件路径”,并在“链接”添加Qt的lib库。 6. 测试项目是否能够正常编译运行。 配置pcl环境 1. 下载pcl源码包,解压到本地目录。 2. 在vs2019新建空白c++项目,如MyPCL。 3. 在项目属性管理器,右键单击“全部配置”并选择“属性”。 4. 选择“VC++目录”,在“包含目录”添加pcl源码包的include目录,如“E:\PCL1.11.1\include\pcl-1.11”。 5. 在“库目录”,添加pcl源码包的lib目录,如“E:\PCL1.11.1\lib”。 6. 在“链接器”的“输入”,添加以下依赖库:pcl_common_debug.lib、pcl_io_debug.lib、pcl_kdtree_debug.lib、pcl_octree_debug.lib、pcl_sample_consensus_debug.lib、pcl_segmentation_debug.lib、pcl_surface_debug.lib等。 7. 在项目添加测试代码,并编译运行查看执行结果。 总之,vs2019 vtk qt pcl的配置环境并不是一件短时间内能够完成的任务,需要耐心细致和不断尝试和排错,同时需要理解这些库的基本概念和技术细节,才能达到较好的调试效果。 ### 回答3: 在进行vs2019 vtk qt pcl配置环境之前,首先需要确保计算机上已经安装好了vs2019、vtk、qt以及pcl等相应的软件和库文件。以下为具体的配置步骤: 1. 安装vtk vtk是一个用于3D可视化和图像处理的开源库,可下载安装包进行安装。安装完成后,需要将vtk的路径添加到系统环境变量。 2. 安装qt qt是跨平台的C++应用程序开发框架,也可下载安装包进行安装。安装完成后,还需要安装qt creator。 3. 安装pcl pcl是点云库,可通过官网下载安装包进行安装。安装完成后,还需要将pcl的路径添加到系统环境变量。 4. 配置vs2019 a) 在visual studio创建项目,选择qt项目,并选择要使用的qt版本。 b) 选择Qt VS Tools插件,打开“Qt VS Tools”向导,选择已安装的qt版本和构建目录。 c) 在项目属性,进行vtk和pcl的配置设置。具体步骤为:选择“属性” -> “C/C++” -> “常规”,在“附加包含目录”处添加vtk和pcl的路径。然后选择“链接器” -> “常规”,在“附加库目录”处添加vtk和pcl的路径。最后,在“链接器” -> “输入”处添加vtk和pcl的库文件名。 5. 运行示例程序 在visual studio打开示例程序,编译和运行。如果程序能够正常的运行并显示出3D图像,则说明配置环境成功。 总之,vs2019 vtk qt pcl配置环境需要先安装相应的软件和库文件,然后进行相应的配置设置。如果一步步按照上述步骤操作,就可以成功地配置出一个可用的开发环境,从而实现3D可视化和图像处理的功能。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值