Qt Creator中使用PCL库

我之前写过一篇博客Qt 5.9使用VTK显示点云,可惜其中很多部分都是失败的,而且排版糟糕,不过其中PCL的安装以及在VS中使用PCL的方法是值得参考的,起码我通过这种方式安装的PCL在VS上一直用得OK。但是用了一段时间还是有一些小问题,不致命但是极其恶心,比如

  • 在VS中使用PCL我怀疑加入的附加依赖项过多,经常导致IntelliSense卡半天,自动补全功能近乎废了,对于我这种“面向自动补全开发”的程序猿来说无异于灭顶之灾
  • VS中使用Qt做界面还是很麻烦,虽然可以装一个Qt的插件使用Qt Designer设计界面,但总还是不如Qt自己的Creator好
  • 另外在VS中使用Qt库还是不太直接

鉴于此,本着“生命不息,折腾不止”的原则,把PCL折腾到Qt中来。

1.环境

我的环境和之前博客中的不太一样,但是安装与配置方法大同小异。

  • 使用的win10系统。小问题,没差别
  • 使用的VS2015不再是2013(2015对应的是VC14编译器,与2013不一样),小问题
  • 使用的是pcl-1.8.1-msvc2015-x86版本,也就是32位的,安装很简单——在这里下载,提取码:utw2;直接点击PCL-1.8.1-AllInOne-msvc2015-win32.exe安装,完成后需要像博客中第一部分PCL的安装中说明的一样配置环境变量,之后配置属性表(这里我给出的安装包里有配好的属性表,如果你的安装目录不一样,只需要更改一下包含目录与库目录即可);完成以上就可以在VS中使用PCL了
  • 我的Qt版本是Qt5.8.0,没有装MINGW版本的,MSVC64位与32位的编译套件都安装了(如果要在Qt中使用PCL,那么Qt必须与PCL的版本相协调,因为我的PCL装的32位的,无可奈何只能再装一个MSVC32位版的Qt编译套件;Qt的安装过程略,很简单,下载,安装即可)

2.编译VTK

实际上在Qt的项目中配置一下包含目录、外部库位置即可(按照第3部分),但是最后配置好后会发现PCL能正常使用但是涉及到其中第三方库VTK的部分功能不能使用,故这里重新编译下VTK库。

  1. VTK源码下载
    前两步可直接跳过使用我编译好的,除非你的版本不一样,得自己编译。这里用PCL1.8.1配套的VTK8.0,源码下载地址,提取码:2f5x
  2. CMAKE配置VTK for Qt编译环境与源码编译
    2.1. 打开CMAKE配置项目(CMAKE随便装一个版本),设置源代码目录与构建目录,如下:
    在这里插入图片描述
    2.2. 点击configure,选择VS2015generator选择win32平台(与PCL同平台)
    在这里插入图片描述
    2.3. 继续configure
    在这里插入图片描述
    2.4. 之后是配置项目构建的一些路径以及项目的配置,选中BUILD_SHARED_LIBS和VTK_GROUP_QT(对Qt的支持),接下来继续configure会提示配置QMAKE路径与Qt版本,配置完了后继续configure,然后是配置QT的安装目录以及其一些子目录,按照本机路径配置即可(注意也要指定同平台的Qt,比如VS2015WIN32,我这里使用的x64的Qt路径,倒了大霉重新编译)
    这里有一点一定要注意,要设置VTK的渲染后端为OpenGL而不是OpenGL2,如图
在这里插入图片描述 在这里插入图片描述
在这里插入图片描述 在这里插入图片描述

在这里插入图片描述
2.5. 一直configure直到标红消失,然后generate,在构建目录下会出现生成的项目文件VTK.sln,使用VS(以管理员身份运行)打开这个项目,选择ALL_BUILD-右键-生成
在这里插入图片描述
2.6. 生成完了选择INSTALL-右键-仅用于项目-仅生成INSTALL,会在C:\\Program Files(x86)\\下生成一个VTK文件夹,这即是最终要拷到PCL中使用的东西。
在这里插入图片描述
2.7. 将以上生成的VTK文件夹下的bin目录下所有dll文件名称改成-gd.dll格式,lib文件夹下lib文件名称改为-gd.lib格式,然后再VS中使用release模式在执行一遍以上生成与安装步骤,将其dlllib拷到之前的VTK文件夹下,大功告成。
将VTK下dlllib批量改名可使用以下python脚本

import os

def rename_file(old):
    #将lib文件或dll文件改名成*-gd.lib或*-gd.dll
    if old[::-1].find('bil.')==0 or old[::-1].find('lld.')==0:
        path=os.path.dirname(old)
        f_name=os.path.basename(old)
        suf=f_name[-4:]
        f_name
### 使用PCL在Ubuntu上的Qt环境配置 #### 安装依赖项 为了能够在Qt环境中使用PCL(Point Cloud Library),需要先安装一系列必要的软件包。这可以通过更新本地包索引并安装所需的开发工具来完成[^1]。 ```bash sudo apt-get update sudo apt-get install build-essential cmake git pkg-config ``` #### 安装PCL及相关组件 接着,安装PCL及其依赖项,这些命令会自动处理所有必需的依赖关系,并设置好最新的稳定版本[^2]。 ```bash sudo apt-get install libpcl-dev pcl-tools ``` #### 创建Qt项目结构 创建一个新的文件夹作为项目的根目录,在其中初始化CMakeLists.txt用于构建系统描述以及源代码文件main.cpp。此过程定义了编译器应该如何链接PCL到应用程序之中[^3]。 ```cmake # CMakeLists.txt cmake_minimum_required(VERSION 3.0) project(PclExample) find_package(PCL 1.8 REQUIRED COMPONENTS common io visualization) include_directories(${PCL_INCLUDE_DIRS}) link_directories(${PCL_LIBRARY_DIRS}) add_executable(pcl_example main.cpp) target_link_libraries (pcl_example ${PCL_LIBRARIES}) ``` ```cpp // main.cpp #include <iostream> #include <pcl/point_cloud.h> #include <pcl/io/pcd_io.h> int main(int argc, char** argv){ pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>); if (pcl::io::loadPCDFile<pcl::PointXYZ> ("test_pcd.pcd", *cloud) == -1){ //* load the file PCL_ERROR ("Couldn't read file test_pcd.pcd \n"); return (-1); } std::cout << "Loaded " << cloud->width * cloud->height << " data points from test_pcd.pcd with the following fields: " << std::endl; } ``` #### 配置Qt Creator以支持PCL 打开Qt Creator IDE,导入之前建立好的工程文件(CMakeLists.txt), 设置合适的套件(Kits)选项确保选择了正确的编译器与调试器组合。通过这种方式可以方便地利用IDE特性如语法高亮、智能感知等功能加速开发流程[^4]。 #### 编译运行程序 最后一步是在Qt Creator内部点击“Build and Run”按钮启动应用实例验证一切正常工作。如果遇到任何错误提示,则需仔细检查上述每一步骤是否遗漏或存在拼写失误等问题[^5]。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值