VisualStudio如何配置PCL点云库?

news2024/11/29 1:47:56

文章目录

  • 0.引言
  • 1.准备PCL点云库
  • 2.VisualStudio相关设置
  • 3.配置PCL点云库
  • 4.测试PCL

0.引言

  因笔者课题涉及点云处理,需要通过PCL进行点云数据分析处理,查阅现有网络资料,实现了VisualStudio2015(x86)配置PCL1.8.1点云库,本文记录实现配置的过程。

1.准备PCL点云库

  (1)下载PCL
  下载地址: https://github.com/PointCloudLibrary/pcl/releases/tag/pcl-1.8.1
  笔者的VS软件为32位的VS2015,下载以下文件(各学者根据自己VS情况下载对应的pcl文件)。
  在这里插入图片描述
  (2)安装PCL
  ①双击下载的.exe文件进行安装
  在这里插入图片描述

  在这里插入图片描述

  ②将.zip解压,并将里面的所有.pdb文件复制到PCL安装路径下的bin文件中
  在这里插入图片描述

  (3)配置PCL
  快捷键Win+Q,搜索“系统环境变量”,打开系统属性对话框,进入“环境变量”进行设置。
  在这里插入图片描述

%PCL_ROOT%\3rdParty\VTK\bin
%PCL_ROOT%\3rdParty\FLANN\bin  
%OPENNI2_INCLUDE%  
%OPENNI2_LIB%  
%OPENNI2_REDIST%

  注:设置完环境变量后,一般需要重启电脑,使环境变量生效。

2.VisualStudio相关设置

  (1)新建控制台应用
  在这里插入图片描述

  (2)解决方案配置选择Release,平台选择x86
  在这里插入图片描述

3.配置PCL点云库

  (1)在属性管理器中建立项目属性表
  在这里插入图片描述

  (2)打开项目属性表
  在这里插入图片描述

  (3)设置VC++目录下的“包含目录”
  在这里插入图片描述

$(PCL_ROOT)\include
$(PCL_ROOT)\3rdParty\Boost\include\boost-1_64  
$(PCL_ROOT)\3rdParty\Eigen\eigen3  
$(PCL_ROOT)\3rdParty\FLANN\include  
$(PCL_ROOT)\3rdParty\OpenNI2\Include  
$(PCL_ROOT)\3rdParty\Qhull\include  
$(PCL_ROOT)\3rdParty\VTK\include\vtk-8.0

  (4)设置VC++目录下的“库目录”
  在这里插入图片描述

$(PCL_ROOT)\lib
$(PCL_ROOT)\3rdParty\Boost\lib  
$(PCL_ROOT)\3rdParty\FLANN\lib  
$(PCL_ROOT)\3rdParty\OpenNI2\Lib  
$(PCL_ROOT)\3rdParty\Qhull\lib  
$(PCL_ROOT)\3rdParty\VTK\lib

  (5)设置C/C++下预处理器的“预处理定义”
  在这里插入图片描述

BOOST_USE_WINDOWS_H
NOMINMAX  
_CRT_SECURE_NO_DEPRECATE

  (6)设置链接器下输入的“附加依赖项”
  在这里插入图片描述

pcl_common_release.lib
pcl_features_release.lib  
pcl_filters_release.lib  
pcl_io_release.lib  
pcl_io_ply_release.lib  
pcl_kdtree_release.lib  
pcl_keypoints_release.lib  
pcl_ml_release.lib  
pcl_octree_release.lib  
pcl_outofcore_release.lib  
pcl_people_release.lib  
pcl_recognition_release.lib  
pcl_registration_release.lib  
pcl_sample_consensus_release.lib  
pcl_search_release.lib  
pcl_segmentation_release.lib  
pcl_stereo_release.lib  
pcl_surface_release.lib  
pcl_tracking_release.lib  
pcl_visualization_release.lib  
libboost_atomic-vc140-mt-1_64.lib  
libboost_chrono-vc140-mt-1_64.lib  
libboost_container-vc140-mt-1_64.lib  
libboost_context-vc140-mt-1_64.lib  
libboost_coroutine-vc140-mt-1_64.lib  
libboost_date_time-vc140-mt-1_64.lib  
libboost_exception-vc140-mt-1_64.lib  
libboost_filesystem-vc140-mt-1_64.lib  
libboost_graph-vc140-mt-1_64.lib  
libboost_iostreams-vc140-mt-1_64.lib  
libboost_locale-vc140-mt-1_64.lib  
libboost_log-vc140-mt-1_64.lib  
libboost_log_setup-vc140-mt-1_64.lib  
libboost_math_c99-vc140-mt-1_64.lib  
libboost_math_c99f-vc140-mt-1_64.lib  
libboost_math_c99l-vc140-mt-1_64.lib  
libboost_math_tr1-vc140-mt-1_64.lib  
libboost_math_tr1f-vc140-mt-1_64.lib  
libboost_math_tr1l-vc140-mt-1_64.lib  
libboost_mpi-vc140-mt-1_64.lib  
libboost_prg_exec_monitor-vc140-mt-1_64.lib  
libboost_program_options-vc140-mt-1_64.lib  
libboost_random-vc140-mt-1_64.lib  
libboost_regex-vc140-mt-1_64.lib  
libboost_serialization-vc140-mt-1_64.lib  
libboost_signals-vc140-mt-1_64.lib  
libboost_system-vc140-mt-1_64.lib  
libboost_test_exec_monitor-vc140-mt-1_64.lib  
libboost_thread-vc140-mt-1_64.lib  
libboost_timer-vc140-mt-1_64.lib  
libboost_unit_test_framework-vc140-mt-1_64.lib  
libboost_wave-vc140-mt-1_64.lib  
libboost_wserialization-vc140-mt-1_64.lib  
vtkalglib-8.0.lib  
vtkChartsCore-8.0.lib  
vtkCommonColor-8.0.lib  
vtkCommonComputationalGeometry-8.0.lib  
vtkCommonCore-8.0.lib  
vtkCommonDataModel-8.0.lib  
vtkCommonExecutionModel-8.0.lib  
vtkCommonMath-8.0.lib  
vtkCommonMisc-8.0.lib  
vtkCommonSystem-8.0.lib  
vtkCommonTransforms-8.0.lib  
vtkDICOMParser-8.0.lib  
vtkDomainsChemistry-8.0.lib  
vtkexoIIc-8.0.lib  
vtkexpat-8.0.lib  
vtkFiltersAMR-8.0.lib  
vtkFiltersCore-8.0.lib  
vtkFiltersExtraction-8.0.lib  
vtkFiltersFlowPaths-8.0.lib  
vtkFiltersGeneral-8.0.lib  
vtkFiltersGeneric-8.0.lib  
vtkFiltersGeometry-8.0.lib  
vtkFiltersHybrid-8.0.lib  
vtkFiltersHyperTree-8.0.lib  
vtkFiltersImaging-8.0.lib  
vtkFiltersModeling-8.0.lib  
vtkFiltersParallel-8.0.lib  
vtkFiltersParallelImaging-8.0.lib  
vtkFiltersPoints-8.0.lib  
vtkFiltersProgrammable-8.0.lib  
vtkFiltersSelection-8.0.lib  
vtkFiltersSMP-8.0.lib  
vtkFiltersSources-8.0.lib  
vtkFiltersStatistics-8.0.lib  
vtkFiltersTexture-8.0.lib  
vtkFiltersTopology-8.0.lib  
vtkFiltersVerdict-8.0.lib  
vtkfreetype-8.0.lib  
vtkGeovisCore-8.0.lib  
vtkgl2ps-8.0.lib  
vtkhdf5-8.0.lib  
vtkhdf5_hl-8.0.lib  
vtkImagingColor-8.0.lib  
vtkImagingCore-8.0.lib  
vtkImagingFourier-8.0.lib  
vtkImagingGeneral-8.0.lib  
vtkImagingHybrid-8.0.lib  
vtkImagingMath-8.0.lib  
vtkImagingMorphological-8.0.lib  
vtkImagingSources-8.0.lib  
vtkImagingStatistics-8.0.lib  
vtkImagingStencil-8.0.lib  
vtkInfovisCore-8.0.lib  
vtkInfovisLayout-8.0.lib  
vtkInteractionImage-8.0.lib  
vtkInteractionStyle-8.0.lib  
vtkInteractionWidgets-8.0.lib  
vtkIOAMR-8.0.lib  
vtkIOCore-8.0.lib  
vtkIOEnSight-8.0.lib  
vtkIOExodus-8.0.lib  
vtkIOExport-8.0.lib  
vtkIOExportOpenGL-8.0.lib  
vtkIOGeometry-8.0.lib  
vtkIOImage-8.0.lib  
vtkIOImport-8.0.lib  
vtkIOInfovis-8.0.lib  
vtkIOLegacy-8.0.lib  
vtkIOLSDyna-8.0.lib  
vtkIOMINC-8.0.lib  
vtkIOMovie-8.0.lib  
vtkIONetCDF-8.0.lib  
vtkIOParallel-8.0.lib  
vtkIOParallelXML-8.0.lib  
vtkIOPLY-8.0.lib  
vtkIOSQL-8.0.lib  
vtkIOTecplotTable-8.0.lib  
vtkIOVideo-8.0.lib  
vtkIOXML-8.0.lib  
vtkIOXMLParser-8.0.lib  
vtkjpeg-8.0.lib  
vtkjsoncpp-8.0.lib  
vtklibharu-8.0.lib  
vtklibxml2-8.0.lib  
vtklz4-8.0.lib  
vtkmetaio-8.0.lib  
vtkNetCDF-8.0.lib  
vtknetcdf_c++.lib  
vtkoggtheora-8.0.lib  
vtkParallelCore-8.0.lib  
vtkpng-8.0.lib  
vtkproj4-8.0.lib  
vtkRenderingAnnotation-8.0.lib  
vtkRenderingContext2D-8.0.lib  
vtkRenderingContextOpenGL-8.0.lib  
vtkRenderingCore-8.0.lib  
vtkRenderingFreeType-8.0.lib  
vtkRenderingGL2PS-8.0.lib  
vtkRenderingImage-8.0.lib  
vtkRenderingLabel-8.0.lib  
vtkRenderingLIC-8.0.lib  
vtkRenderingLOD-8.0.lib  
vtkRenderingOpenGL-8.0.lib  
vtkRenderingVolume-8.0.lib  
vtkRenderingVolumeOpenGL-8.0.lib  
vtksqlite-8.0.lib  
vtksys-8.0.lib  
vtktiff-8.0.lib  
vtkverdict-8.0.lib  
vtkViewsContext2D-8.0.lib  
vtkViewsCore-8.0.lib  
vtkViewsInfovis-8.0.lib  
vtkzlib-8.0.lib  
flann.lib  
flann_cpp.lib  
flann_cpp_s.lib  
flann_s.lib  
qhullcpp_d.lib  
qhullstatic.lib  
qhullstatic_r.lib  
qhull.lib  
qhull_p.lib  
qhull_r.lib  
OpenNI2.lib  
kernel32.lib  
user32.lib  
gdi32.lib  
winspool.lib  
shell32.lib  
ole32.lib  
oleaut32.lib  
uuid.lib  
comdlg32.lib  
advapi32.lib  
comctl32.lib  
wsock32.lib  
glu32.lib  
opengl32.lib  
ws2_32.lib  
Psapi.lib

  (7)保存属性表
  在这里插入图片描述

  (8)另外的项目使用,直接添加现有属性表即可
  在这里插入图片描述

  注:有时可能会报以下找不到*.dll的错误。
  在这里插入图片描述
  一般将对应的dll文件拷贝到pclText.exe所在目录即可,也可将相应的dll所在目录作为工作目录,减少拷贝量。
  在这里插入图片描述

$(PCL_ROOT)\bin

4.测试PCL

  (1)在pclTest.cpp添加以下测试代码

#include "stdafx.h"
  
#include <iostream>  
#include <vector>  
#include <ctime>  
#include <pcl/point_cloud.h>  
#include <pcl/octree/octree.h>  
#include <boost/thread/thread.hpp>  
#include <pcl/visualization/pcl_visualizer.h>  
using namespace std;  
  
int main(int argc, char** argv)  
{  
    srand((unsigned int)time(NULL));  
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);  
    // 创建点云数据  
    cloud->width = 1000;  
    cloud->height = 1;  
    cloud->points.resize(cloud->width * cloud->height);  
    for (size_t i = 0; i < cloud->points.size(); ++i)  
    {  
        cloud->points[i].x = 1024.0f * rand() / (RAND_MAX + 1.0f);  
        cloud->points[i].y = 1024.0f * rand() / (RAND_MAX + 1.0f);  
        cloud->points[i].z = 1024.0f * rand() / (RAND_MAX + 1.0f);  
    }  
    pcl::octree::OctreePointCloudSearch<pcl::PointXYZ> octree(0.1);  
    octree.setInputCloud(cloud);  
    octree.addPointsFromInputCloud();  
    pcl::PointXYZ searchPoint;  
    searchPoint.x = 1024.0f * rand() / (RAND_MAX + 1.0f);  
    searchPoint.y = 1024.0f * rand() / (RAND_MAX + 1.0f);  
    searchPoint.z = 1024.0f * rand() / (RAND_MAX + 1.0f);  
    //半径内近邻搜索  
    vector<int>pointIdxRadiusSearch;  
    vector<float>pointRadiusSquaredDistance;  
    float radius = 256.0f * rand() / (RAND_MAX + 1.0f);  
    cout << "Neighbors within radius search at (" << searchPoint.x  
        << " " << searchPoint.y  
        << " " << searchPoint.z  
        << ") with radius=" << radius << endl;  
  
    if (octree.radiusSearch(searchPoint, radius, pointIdxRadiusSearch, pointRadiusSquaredDistance) > 0)  
    {  
        for (size_t i = 0; i < pointIdxRadiusSearch.size(); ++i)  
            cout << "    " << cloud->points[pointIdxRadiusSearch[i]].x  
            << " " << cloud->points[pointIdxRadiusSearch[i]].y  
            << " " << cloud->points[pointIdxRadiusSearch[i]].z  
            << " (squared distance: " << pointRadiusSquaredDistance[i] << ")" << endl;  
    }  
    // 初始化点云可视化对象  
    boost::shared_ptr<pcl::visualization::PCLVisualizer>viewer(new pcl::visualization::PCLVisualizer("显示点云"));  
    viewer->setBackgroundColor(0, 0, 0);  //设置背景颜色为黑色  
         // 对点云着色可视化 (red).  
  
    pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ>target_color(cloud, 255, 0, 0);  
    viewer->addPointCloud<pcl::PointXYZ>(cloud, target_color, "target cloud");  
    viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 1, "target cloud");  
    // 等待直到可视化窗口关闭  
    while (!viewer->wasStopped())  
    {  
        viewer->spinOnce(100);  
        boost::this_thread::sleep(boost::posix_time::microseconds(1000));  
    }  
    return (0);  
}

  (2)执行结果
  在这里插入图片描述

参考资料:
[1] _JJW. VS2015配置PCL库(VS2015+PCL1.8.1); 2021-12-29 [accessed 2023-05-14].
[2] 点云侠. Win10 系统下VisualStudio2019 配置点云库 PCL1.11.0; 2022-12-24 [accessed 2023-05-14].
[3] 点云侠. Win10 系统下VisualStudio2019 配置点云库 PCL1.12.0; 2022-12-24 [accessed 2023-05-14].
[4] 点云侠. Win10 系统下VisualStudio2019 配置点云库 PCL1.12.1; 2022-07-22 [accessed 2023-05-14].
[5] 点云侠. Win10 系统下VisualStudio2022 配置点云库 PCL1.13.0; 2023-01-07 [accessed 2023-05-14].
[6] 钢铁男儿. 由于找不动pcl_common_debug.dll,无法继续执行代码; 2020-03-13 [accessed 2023-05-14].
[7] Luo_Xubo. vtk报错“由于找不到**.dll无法继续执行代码“ 解决方案; 2020-11-01 [accessed 2023-05-14].

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/524137.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python——pyqt-auto-tool自动化小工具(源码)

目录 一、演示视频 二、代码包 三、使用步骤 四、总结 一、演示视频 pyqt-auto-tool自己乱改的自动化小工具_哔哩哔哩_bilibili今天教资考试完&#xff0c;花半天自己乱改的自动化小工具pyqt-auto-tool&#xff0c;二开1、auto-tool原作者&#xff1a;https://www.bilibil…

学习通项目需要用到的

思路&#xff1a; 把长连接弄好课堂详细页面可以看到班级的所有学生&#xff0c;双击学生弹窗&#xff0c;可以确认从该课程中移除学生教师可以在班级详细页面通过输入学生的id&#xff0c;将学生加入该班级做好签到的页面&#xff0c;输入签到标题&#xff0c;选择签到的结束…

玩转计算机组成原理--指令系统

目录 一、机器指令 1.1指令的一般格式 1.操作码: 2.地址码 1.2指令字长 二、操作数类型和操作类型 2.1操作数类型 2.2操作类型 三、寻址方式(重要) 3.1指令寻址 1.顺序寻址 2.跳跃寻址 3.2数据寻址 1.立即寻址 2.直接寻址 3.隐含寻址 4.间接寻址 5.寄存器寻址 …

创作星-创意大爆发!AI文案生成器让创作轻松快捷,轻松撰写出热门标题。

一、创作星-创意大爆发&#xff01;AI文案生成器让创作轻松快捷&#xff0c;轻松撰写出热门标题。 ✨使用“创作星”&#xff0c;让AI帮你生成惊艳的文案&#xff01; ✨创意大爆发&#xff01;AI文案生成器让创作轻松快捷&#xff0c;轻松撰写出热门标题。 ✨AI文案神器&…

【Linux指令④】Linux查看日历、时间、打包压缩文件、Linux中的计算器,常用热键 关机指令

Linux指令 ❀date❀cal❀findwhichwhereis ❀grep❀zip/unzip❀tar❀bc❀常用的热键❀关机&#x1f340;小结&#x1f340; &#x1f389;博客主页&#xff1a;小智_x0___0x_ &#x1f389;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f389;系列专…

kubectl常用命令|pod生命周期|金丝雀发布|超详细

kubectl常用命令|pod生命周期|金丝雀发布|超详细 一 kubectl常用命令1.1 查看版本信息1.2查看资源对象简写1.3查看集群信息1.4 配置kubectl自动补全1.5node节点查看日志 二 k8s基本信息查看2.1 查看 master 节点状态2.2 查看命令空间2.3 创建和删除命名空间2.4 在命名空间kube-…

python读写json文件方法详解

在我们日常使用 Python时&#xff0c;经常会使用到 json文件。那么在平时写一些小程序时&#xff0c;如何使用 json文件呢&#xff1f;今天我将介绍如何读取和写入 Json文件。 json是一种数据结构&#xff0c;它是将字符串转换成数据的一种技术。使用 json可以非常方便的将一组…

在CentOS上安装Docker的步骤

在CentOS上安装Docker的步骤如下&#xff1a; 更新系统&#xff1a; sudo yum update 添加Docker官方存储库&#xff1a; sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum-config-manag…

FL 3D segment

HarmoFL&#xff1a;在异构医学图像联邦学习中协调本地和全局漂移 多个医疗机构联合使用联邦学习&#xff08;FL&#xff09;训练模型已成为最大化数据驱动模型潜力的有前途的解决方案&#xff0c;但医学图像中的非独立和非同分布&#xff08;non-iid&#xff09;数据仍然是实…

支付系统设计三:渠道网关设计03-参数验证

文章目录 前言一、参数校验1. MessageDescription内容2. 参数验证执行器3. 字段验证处理器4. 验证器工厂5. style校验器6. 验证器接口7. 长度校验器8. 枚举类型校验器9. yml配置9.1 deduct.yml9.2 style.yml 二、幂等校验总结 前言 在《支付系统设计三&#xff1a;渠道网关设计…

linux内核编译不通过问题的两种排查方法(非正式)

目录 一、前言 二、 问题现象 三、问题排查思路1&#xff1a;问题所在处向上排查 3.1 整体思路 3.2 排查过程 3.3 资料查询 3.4 尝试动作1&#xff1a;开启相应配置项 3.4.1 检查内核配置项 3.4.2 开启配置项 3.4.3 尝试编译 四、问题排查思路2&#xff1a;从上向下排…

讯飞星火大模型体验报告

近日&#xff0c;科大讯飞召开了星火认知大模型成果发布会&#xff0c;会上表示讯飞星火大模型将突破开放式问答&#xff0c;对标ChatGPT&#xff0c;在中文能力上超过ChatGPT&#xff0c;在英文能力上与ChatGPT相当。对此&#xff0c;你怎么看&#xff1f; 笔者准备给bing/ch…

数据结构第二天:File Transfer 【树的应用:集合】

原题是英文的&#xff1a;题目详情 - 05-树8 File Transfer (pintia.cn) 我用软件翻译了一下: 我们有一个计算机网络和一系列双向连接。这些连接中的每一个都允许文件从一台计算机传输到另一台计算机。有没有可能从网络上的任何一台计算机向其他计算机发送文件? Input Specif…

STM32 学习笔记_7 定时器中断:输出比较

输出比较 电机相关比较重要。 OC Output Compare&#xff08;IC 是输入捕获&#xff0c;CC代指这两个单元&#xff09;&#xff0c;用于输出一定频率和占空比的PWM波形。 右下角四个就是CCR。只有通用计时器和高级计时器有&#xff0c;共用一个cnt计数器&#xff0c;高级计数…

(数字图像处理MATLAB+Python)第七章图像锐化-第四节:频域高通滤波与综合案例

文章目录 一&#xff1a;频域高通滤波&#xff08;1&#xff09;理想的高通滤波器&#xff08;2&#xff09;巴特沃斯高通滤波器&#xff08;3&#xff09;指数高通滤波器&#xff08;4&#xff09;梯形高通滤波器 二&#xff1a;综合案例——人像美化&#xff08;1&#xff09…

C语言函数大全-- w 开头的函数(2)

C语言函数大全 本篇介绍C语言函数大全-- w 开头的函数 1. wcstok 1.1 函数说明 函数声明函数功能wchar_t *wcstok(wchar_t *wcs, const wchar_t *delim, wchar_t **ptr);用于将一个长字符串拆分成几个短字符串&#xff08;标记&#xff09;&#xff0c;并返回第一个标记的地…

非煤矿山电子封条建设算法 yolov8

非煤矿山电子封条建设算法模型通过yolov8网络模型AI视频智能分析技术&#xff0c;算法模型对作业状态以及出井入井人员数量变化、人员睡岗离岗等情况实时监测分析&#xff0c;及时发现异常动态&#xff0c;自动推送生成的违规截图报警信息。现代目标检测器大部分都会在正负样本…

免费下载Sketch模板素材一文搞定!

对于设计师来说&#xff0c;UI 模板素材是提高设计效率和保证设计质量的重要工具。然而&#xff0c;很多设计师在使用 Sketch 时&#xff0c;会遇到 Sketch 模板素材不足、格式不兼容或使用成本高等问题。本文将为你介绍一款资源齐全、跨平台、无需下载、免费使用的 Sketch 模板…

Tips for Deep Learning

目录 Recipe of Deep Learning Good Results on Training Data&#xff1f; New activation function Adaptive learning rate Good Results on Testing Data&#xff1f; Early Stopping Regularization Dropout Recipe of Deep Learning 我们要做的第一件事是&#x…

http协议在万维网的一生

tcp与udp的区别 http协议位于应用程序层&#xff0c;必须经过传输层进行通信 tcp即传输控制协议&#xff0c;首先通过三次握手建立连接&#xff0c;然后传输数据&#xff0c;数据传输成功后 通过四次挥手关闭连接&#xff0c;如有数据丢失则会重试保证数据传输可靠性 是一个面向…