VS2017 中配置QT+PCL显示点云或3D图形

本文介绍了如何在VS2017中配置QT和PCL来显示3D点云或图形。由于PCL自带的VTK缺少QVTKWidget.dll,因此需要自行编译VTK。详细步骤包括下载VTK源码,使用CMake配置编译,设置相关选项,如VTK_Group_Qt和VTK_RENDERING_BACKEND。编译完成后,将QVTKWidgetPlugin.dll拷贝到QT的designer插件目录,使得Qt Designer可以显示QVTK控件。通过测试,可以在QT界面中成功展示.pcd和.ply文件的3D效果。
摘要由CSDN通过智能技术生成

VS2017 中在QT中显示点云或3D图形

在VS2017中,想要在qt生成界面中显示点云,但是pcl的vtk并没有,所以需要自己编译。
原因:因为没有单独安装VTK,PCL中安装版中自带的vtk缺少QVTKWidget.dll,这样在QT Designer中就无法显示点云,故需自己编译VTK。

前提:已经安装好VS2017、QT5.9.、PCL1.81、CMake(是使用CMake编译)(大版本对应就可按此方法进行VTK编译)

工具 : vtk8.0.1的链接在这https://https://gitlab.kitware.com/vtk/vtk/tree/v8.0.1
(因为PCL1.81中自带的VTK是8.0版本,故需下载vtk8.0开头版本)

安装过程

1.将下载好的安装包VTK安装包复制到PCL安装目录3rdParty下解压(后期可删除),然后将原VTK文件夹备份为VTK_copy(若成功可删除,不成功可还原),并新建空文件夹VTK代替。
在这里插入图片描述
pcl的安装目录,在3rdParty下有自带的VTK,我们先备份VTK文件夹为VTK_copy,然后一个空VTK文件夹,把编译后的VTK就放到这个新建的VTK文件夹下,(QT自带编码不能识别window下中文或空格,注意这点,路径尽量不要含有中文)。

2.cmake编译VTK步骤
2.1 打开cmake-gui进行配置,首先在解压的vtk8.0.1文件夹中新建一个空文件夹build。
在这里插入图片描述
source code :VTK-8.1.1.zip解压后的目录
build the binaries :在VTK-8.1.1.zip解压后的目录下新建一个build目录
2.2 点击configure, 选择编译器
在这里插入图片描述
注意选择自己的配置。
2.3 configure完成之后一片红,但是不用担心,因为我们还没有开始配置
勾选Grouped和Advanced,进行以下设置:
BUILD下取消勾选BUILD_TESTING,只留BUILD_SHARED_LIBS就行了在这里插入图片描述CMAKE下CMAKE_INSTALL_PREFIX设置为你新建的VTK文件夹在这里插入图片描述INSTALL下目录也替换成你新建的VTK文件夹在这里插入图片描述VTK下勾选VTK_Group_Qt,VTK_RENDERING_BACKEND设置为OpenGL(这里一定要注意,否则pcl显示框会出错)。在这里插入图片描述在这里插入图片描述
点击Add Entry,添加CMAKE_DEBUG_POSTFIX,Value设置为-gd(用来区别debug和release版本)在这里插入图片描述
再次点击configure
编译vtk-8.0.1的时候,由于qt默认版本号是4,这里的5.10的qt会报错,修改为5即可
在这里插入图片描述
再次configure qt5已经自动识别出来了,目录正确,无需修改,点击configure
点击generate
点击open project 自动打开vs

  • 3
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
Qt初始化WiFi Mesh网络需要使用Qt的网络模块和QML语言。以下是一个简单的示例程序: ```qml import QtQuick 2.0 import QtQuick.Controls 2.0 import QtQuick.Layouts 1.0 import QtNetwork 2.0 ApplicationWindow { visible: true width: 640 height: 480 title: qsTr("WiFi Mesh") // 创建WiFi Mesh网络 Mesh { id: myMesh // 设置网络名称和密码 networkName: "MyMeshNetwork" passphrase: "MyMeshPassword" // 添加节点 Node { id: node1 // 设置节点名称和密码 nodeName: "Node1" nodePassphrase: "Node1Password" // 设置节点IP地址 nodeIP: "192.168.1.1" } Node { id: node2 // 设置节点名称和密码 nodeName: "Node2" nodePassphrase: "Node2Password" // 设置节点IP地址 nodeIP: "192.168.1.2" } // 信号处理函数 onMeshCreated: { console.log("Mesh created!"); } onError: { console.log("Error: " + errorString); } } // 显示节点信息 ColumnLayout { anchors.centerIn: parent Text { text: "Mesh Network Information" font.pixelSize: 24 } Text { text: "Network Name: " + myMesh.networkName } Text { text: "Network Password: " + myMesh.passphrase } Text { text: "Node 1 Information" font.pixelSize: 18 } Text { text: "Node Name: " + node1.nodeName } Text { text: "Node Password: " + node1.nodePassphrase } Text { text: "Node IP Address: " + node1.nodeIP } Text { text: "Node 2 Information" font.pixelSize: 18 } Text { text: "Node Name: " + node2.nodeName } Text { text: "Node Password: " + node2.nodePassphrase } Text { text: "Node IP Address: " + node2.nodeIP } } } ``` 在上面的示例,我们创建了一个Mesh对象,设置了网络名称和密码,添加了两个节点,并设置了它们的名称、密码和IP地址。我们还实现了onMeshCreated和onError信号处理函数,在网络创建成功或出错时输出相应的信息。最后,我们使用ColumnLayout来显示网络和节点信息。 请注意,这只是一个简单的示例程序,实际应用可能需要更复杂的逻辑和处理。如果您需要更具体的帮助,建议查阅Qt的官方文档或在Qt的社区论坛上咨询其他开发者。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值