栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

VS2019+PCL1.11.1+VTK8.2.0+Qt5.14.2在Windows配置

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

VS2019+PCL1.11.1+VTK8.2.0+Qt5.14.2在Windows配置

VS2019+PCL1.11.1+VTK8.2.0+Qt5.14.2在Windows配置
  • 资源文件
  • PCl配置
  • QT配置
  • VTK编译
  • 最终配置环境
    • 常见问题
    • 解决

本文档主要解决在配置过程中出现的问题,对于环境的主要配置会附上优秀博客的链接。
配置VS2019+PCL+VTK+Qt 可以实现UI图形化界面展示PCL库自带的viewer展示
效果如下:

资源文件

PCL+QT+VTK+Cmake资源可以官网下载,也可以下面网盘链接:

链接:百度网盘
提取码:yf12

将所有的资源准备好后,开始环境的配置。QT和PCL的配置不分先后。

PCl配置

PCL配置过程简单,直接参考 : Win10 系统下 VisualStudio2019 配置点云库 PCL1.11.1

配置过程按照参考博客一步步来就行,说一下常见的问题:

  1. 在安装PCL-1.11.1-AllInOne-msvc2019-win64.exe勾选下图所示时会自动添加系统变量

    但如果点击安装过后出现报错: path too long installer unable to modify path
    这是因为你的环境变量太多而无法写入,这时候自己配置就可以。
  1. 将PCL的配置保存为一个项目属性表,避免重复配置
    (1)项目的属性->调试->环境必须重新配置。出现找不到xxx.dll问题时,就要注意环境中配置的路径与该dll动态链接库的文件路径是否一致。

    (2)配置属性表

① 在视图->其它窗口->属性管理器
② 选择添加新项目属性表

③ 配置完成后保存

④ 就可以在项目文件夹中找到该属性表

QT配置

QT配置直接参考: VS2019配置QT5.14.2

  1. QT的问题主要就是VS2019没有Qt GUI Application,使用Qt Widgets Application

    2.双击ui文件无法打开Qt designer: Qt VS中双击ui文件无法打开的问题
VTK编译

VTK8.2.0使用Cmake和VS2019编译直接参考: PCL1.11.0+VTK8.2.0+QT5.14.2+VS2019在Win10环境下的配置

最终配置环境 常见问题

本人按照其它博客配置会出现,会出现两种问题:
1.找不到xxx.dll

检查你配置的项目的属性->调试->环境的路径是否配置正确
检查配置的Path中的环境变量

2.打不开文件 xxxxx.lib。

检查项目属性表中的Vc++目录->库目录中的路径是否正确,是否有包含所需要的lib的路径
检查项目属性表中的连接器->输入->附加依赖项(直接复制博客给出的附加项时要注意检查你相应文件下的lib文件是否存在或文件名是否一致)

解决

参考链接: VS2019+PCL1.11.1+VTK8.2.0+Qt5.14.2配置
直接配置QT+PCL+VTK的属性表(在QT、PCL已经安装,VTK已经编译的情况下),避免多重属性表之间产生的错误。

  1. 按照参考博客编译VTK8.2.0后得到,其中VTK-install为debug版本

  1. 将VTK-install-relesse->plugins->designer->QVTKWidgetPlugin.dll
    复制到QT5.14.2->msvs2017_64->plugins->designer


点击ui文件可以发现多了QVTK

  1. 在xxx…PCL 1.11.13rdParty下新建一个QVTK,将VTK文件内的所有文件复制到QVTK中

  1. 将xxx…VTKVTK-8.2.0VTK-install 下的bin、include、lib替换到
    新建的xxx…PCL 1.11.13rdPartyQVTK

  1. 在系统环境变量Path中加入xxx…PCL 1.11.13rdPartyQVTKbin

  1. 配置VS项目属性,打开一个QT Widgets Application ,选择Debug,msvc2017_64

  1. 配置属性->调试->环境(找不到dll,查看该处的路径是否都正确)


注意自己的PCL安装路径

>PATH=D:other_software\PCL 1.11.1bin;D:other_software\PCL 1.11.13rdPartyFLANNbin;D:other_softwarePCL 1.11.13rdPartyQVTKbin;D:other_software\PCL 1.11.13rdPartyOpenNI2Tools
  1. C/C++ ->常规->SDL检查 否

  1. C/C++ ->语言->符合模式 否

  1. 配置项目属性表VC++目录->包含目录

//xxx...为你的pcl路径
xxx...PCL 1.11.1includepcl-1.11
xxx...PCL 1.11.13rdPartyBoostincludeboost-1_74
xxx...PCL 1.11.13rdPartyEigeneigen3
xxx...PCL 1.11.13rdPartyFLANNinclude
xxx...PCL 1.11.13rdPartyOpenNI2Include
xxx...PCL 1.11.13rdPartyQhullinclude
xxx...PCL 1.11.13rdPartyQVTKincludevtk-8.2
  1. 配置项目属性表VC++目录->库目录(运行错误找不到xxx.lib注意该部分路径是否正确)

//xxx...为你的pcl路径
xxx...PCL 1.11.1lib
xxx...PCL 1.11.13rdPartyBoostlib
xxx...PCL 1.11.13rdPartyFLANNlib
xxx...PCL 1.11.13rdPartyOpenNI2Lib
xxx...PCL 1.11.13rdPartyQhulllib
xxx...PCL 1.11.13rdPartyQVTKlib

  1. C/C++ ->预处理器->预处理器定义
BOOST_USE_WINDOWS_H
NOMINMAX
_CRT_SECURE_NO_DEPRECATE
  1. 链接器->输入->附加依赖项
    ① 从文件中计算得到()

将xxx…PCL 1.11.13rdPartyQVTKlib中的_gd.lib文件名输入附加依赖项
通过dir/s/b >xxx.txt 可以将该文件夹内所有的文件名提取到xxx.txt中

②直接给出

//pcl
pcl_commond.lib
pcl_featuresd.lib
pcl_filtersd.lib
pcl_iod.lib
pcl_io_plyd.lib
pcl_kdtreed.lib
pcl_keypointsd.lib
pcl_mld.lib
pcl_octreed.lib
pcl_outofcored.lib
pcl_peopled.lib
pcl_recognitiond.lib
pcl_registrationd.lib
pcl_sample_consensusd.lib
pcl_searchd.lib
pcl_segmentationd.lib
pcl_stereod.lib
pcl_surfaced.lib
pcl_trackingd.lib
pcl_visualizationd.lib
//vtk
vtkChartsCore-8.2_gd.lib
vtkCommonColor-8.2_gd.lib
vtkCommonComputationalGeometry-8.2_gd.lib
vtkCommonCore-8.2_gd.lib
vtkCommonDataModel-8.2_gd.lib
vtkCommonExecutionModel-8.2_gd.lib
vtkCommonMath-8.2_gd.lib
vtkCommonMisc-8.2_gd.lib
vtkCommonSystem-8.2_gd.lib
vtkCommonTransforms-8.2_gd.lib
vtkDICOMParser-8.2_gd.lib
vtkDomainsChemistry-8.2_gd.lib
vtkDomainsChemistryOpenGL2-8.2_gd.lib
vtkdoubleconversion-8.2_gd.lib
vtkexodusII-8.2_gd.lib
vtkexpat-8.2_gd.lib
vtkFiltersAMR-8.2_gd.lib
vtkFiltersCore-8.2_gd.lib
vtkFiltersExtraction-8.2_gd.lib
vtkFiltersFlowPaths-8.2_gd.lib
vtkFiltersGeneral-8.2_gd.lib
vtkFiltersGeneric-8.2_gd.lib
vtkFiltersGeometry-8.2_gd.lib
vtkFiltersHybrid-8.2_gd.lib
vtkFiltersHyperTree-8.2_gd.lib
vtkFiltersImaging-8.2_gd.lib
vtkFiltersModeling-8.2_gd.lib
vtkFiltersParallel-8.2_gd.lib
vtkFiltersParallelImaging-8.2_gd.lib
vtkFiltersPoints-8.2_gd.lib
vtkFiltersProgrammable-8.2_gd.lib
vtkFiltersSelection-8.2_gd.lib
vtkFiltersSMP-8.2_gd.lib
vtkFiltersSources-8.2_gd.lib
vtkFiltersStatistics-8.2_gd.lib
vtkFiltersTexture-8.2_gd.lib
vtkFiltersTopology-8.2_gd.lib
vtkFiltersVerdict-8.2_gd.lib
vtkfreetype-8.2_gd.lib
vtkGeovisCore-8.2_gd.lib
vtkgl2ps-8.2_gd.lib
vtkglew-8.2_gd.lib
vtkGUISupportQt-8.2_gd.lib
vtkGUISupportQtOpenGL-8.2_gd.lib
vtkGUISupportQtSQL-8.2_gd.lib
vtkhdf5-8.2_gd.lib
vtkhdf5_hl-8.2_gd.lib
vtkImagingColor-8.2_gd.lib
vtkImagingCore-8.2_gd.lib
vtkImagingFourier-8.2_gd.lib
vtkImagingGeneral-8.2_gd.lib
vtkImagingHybrid-8.2_gd.lib
vtkImagingMath-8.2_gd.lib
vtkImagingMorphological-8.2_gd.lib
vtkImagingSources-8.2_gd.lib
vtkImagingStatistics-8.2_gd.lib
vtkImagingStencil-8.2_gd.lib
vtkInfovisCore-8.2_gd.lib
vtkInfovisLayout-8.2_gd.lib
vtkInteractionImage-8.2_gd.lib
vtkInteractionStyle-8.2_gd.lib
vtkInteractionWidgets-8.2_gd.lib
vtkIOAMR-8.2_gd.lib
vtkIOAsynchronous-8.2_gd.lib
vtkIOCityGML-8.2_gd.lib
vtkIOCore-8.2_gd.lib
vtkIOEnSight-8.2_gd.lib
vtkIOExodus-8.2_gd.lib
vtkIOExport-8.2_gd.lib
vtkIOExportOpenGL2-8.2_gd.lib
vtkIOExportPDF-8.2_gd.lib
vtkIOGeometry-8.2_gd.lib
vtkIOImage-8.2_gd.lib
vtkIOImport-8.2_gd.lib
vtkIOInfovis-8.2_gd.lib
vtkIOLegacy-8.2_gd.lib
vtkIOLSDyna-8.2_gd.lib
vtkIOMINC-8.2_gd.lib
vtkIOMovie-8.2_gd.lib
vtkIONetCDF-8.2_gd.lib
vtkIOParallel-8.2_gd.lib
vtkIOParallelXML-8.2_gd.lib
vtkIOPLY-8.2_gd.lib
vtkIOSegY-8.2_gd.lib
vtkIOSQL-8.2_gd.lib
vtkIOTecplotTable-8.2_gd.lib
vtkIOVeraOut-8.2_gd.lib
vtkIOVideo-8.2_gd.lib
vtkIOXML-8.2_gd.lib
vtkIOXMLParser-8.2_gd.lib
vtkjpeg-8.2_gd.lib
vtkjsoncpp-8.2_gd.lib
vtklibharu-8.2_gd.lib
vtklibxml2-8.2_gd.lib
vtkLocalExample-8.2_gd.lib
vtklz4-8.2_gd.lib
vtklzma-8.2_gd.lib
vtkmetaio-8.2_gd.lib
vtkNetCDF-8.2_gd.lib
vtkogg-8.2_gd.lib
vtkParallelCore-8.2_gd.lib
vtkpng-8.2_gd.lib
vtkproj-8.2_gd.lib
vtkpugixml-8.2_gd.lib
vtkRenderingAnnotation-8.2_gd.lib
vtkRenderingContext2D-8.2_gd.lib
vtkRenderingContextOpenGL2-8.2_gd.lib
vtkRenderingCore-8.2_gd.lib
vtkRenderingFreeType-8.2_gd.lib
vtkRenderingGL2PSOpenGL2-8.2_gd.lib
vtkRenderingImage-8.2_gd.lib
vtkRenderingLabel-8.2_gd.lib
vtkRenderingLOD-8.2_gd.lib
vtkRenderingOpenGL2-8.2_gd.lib
vtkRenderingQt-8.2_gd.lib
vtkRenderingVolume-8.2_gd.lib
vtkRenderingVolumeOpenGL2-8.2_gd.lib
vtksqlite-8.2_gd.lib
vtksys-8.2_gd.lib
vtktheora-8.2_gd.lib
vtktiff-8.2_gd.lib
vtkverdict-8.2_gd.lib
vtkViewsContext2D-8.2_gd.lib
vtkViewsCore-8.2_gd.lib
vtkViewsInfovis-8.2_gd.lib
vtkViewsQt-8.2_gd.lib
vtkzlib-8.2_gd.lib

测试

1.先在QT designer中添加QVTKwidget

2.代码

#include "QtWidgetsApplication4.h"
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace pcl;
using namespace pcl::io;
using namespace std;

//vtk
#include 

QtWidgetsApplication4::QtWidgetsApplication4(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);
	//显示点云
	//初始化点云
	pcl::PointCloud::Ptr cloud(new pcl::PointCloud);
	//pcl::io::loadPLYFile("Laurana50k.ply", *cloud);  //使用点云文件  ply
	pcl::io::loadPCDFile("bunny.pcd", *cloud);  //使用点云文件 pcb

	//声明视窗
	boost::shared_ptr viewer(new pcl::visualization::PCLVisualizer("3D Viewer"));
	//设置视窗背景色
	viewer->setBackgroundColor(0, 0, 0);	
	//预处理点云颜色
	pcl::visualization::PointCloudColorHandlerCustom magenta(cloud, 255, 0, 255);
	//把点云加载到视窗
	viewer->addPointCloud(cloud, magenta, "cloud");
	//设置点云大小
	viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 3, "cloud");

    //QVTK组件
	ui.qvtkWidget->SetRenderWindow(viewer->getRenderWindow());
	ui.qvtkWidget->update();
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/938544.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号