VisualStudio如何配置PCL点云库?

这篇具有很好参考价值的文章主要介绍了VisualStudio如何配置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文件)。
  VisualStudio如何配置PCL点云库?
  (2)安装PCL
  ①双击下载的.exe文件进行安装
  VisualStudio如何配置PCL点云库?

  VisualStudio如何配置PCL点云库?

  ②将.zip解压,并将里面的所有.pdb文件复制到PCL安装路径下的bin文件中
  VisualStudio如何配置PCL点云库?

  (3)配置PCL
  快捷键Win+Q,搜索“系统环境变量”,打开系统属性对话框,进入“环境变量”进行设置。
  VisualStudio如何配置PCL点云库?

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

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

2.VisualStudio相关设置

  (1)新建控制台应用
  VisualStudio如何配置PCL点云库?

  (2)解决方案配置选择Release,平台选择x86
  VisualStudio如何配置PCL点云库?

3.配置PCL点云库

  (1)在属性管理器中建立项目属性表
  VisualStudio如何配置PCL点云库?

  (2)打开项目属性表
  VisualStudio如何配置PCL点云库?

  (3)设置VC++目录下的“包含目录”
  VisualStudio如何配置PCL点云库?

$(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++目录下的“库目录”
  VisualStudio如何配置PCL点云库?

$(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++下预处理器的“预处理定义”
  VisualStudio如何配置PCL点云库?

BOOST_USE_WINDOWS_H
NOMINMAX  
_CRT_SECURE_NO_DEPRECATE

  (6)设置链接器下输入的“附加依赖项”
  VisualStudio如何配置PCL点云库?

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)保存属性表
  VisualStudio如何配置PCL点云库?

  (8)另外的项目使用,直接添加现有属性表即可
  VisualStudio如何配置PCL点云库?

  注:有时可能会报以下找不到*.dll的错误。
  VisualStudio如何配置PCL点云库?
  一般将对应的dll文件拷贝到pclText.exe所在目录即可,也可将相应的dll所在目录作为工作目录,减少拷贝量。
  VisualStudio如何配置PCL点云库?

$(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)执行结果
  VisualStudio如何配置PCL点云库?

参考资料:
[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].文章来源地址https://www.toymoban.com/news/detail-458432.html

到了这里,关于VisualStudio如何配置PCL点云库?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【python中对点云PCL库的下载安装与配置】

    需要的资料: python_pcl-0.3.1-cp36-cp36m-win_amd64.whl 压缩包:pcl-1.12.1-pdb-msvc2019-win64 pcl程序:PCL-1.12.1-AllInOne-msvc2019-win64 网盘链接:https://pan.baidu.com/s/184yY7fc5rqwwd9F4cMncDw 提取码:qaqa 用来检验安装是否成功的PCD文件:rabbit.pcd 文件先进行提取,提取完毕之后开始安装: 第一步:双击

    2024年02月12日
    浏览(51)
  • 常见的点云下载地址/点云集合/点云库30个

    1、pcl库自带教程所需的点云数据下载地址 Point Cloud Library - Browse /PCD datasets at SourceForge.net 另外一个地址 https://github.com/PointCloudLibrary/data 31、新增:VTK库的点云数据下载地址,包含.vtkplypdbvtptifstl等格式的点云数据 https://github.com/pyvista/vtk-data/tree/master/Data 2、Princeton ModelNet

    2024年02月13日
    浏览(54)
  • CloudCompare二次开发之如何通过PCL进行点云分割?

      因笔者课题涉及点云处理,需要通过PCL进行点云数据一系列处理分析,查阅现有网络资料,对常用PCL点云分割进行代码实现,本文记录分割实现过程。    (1)设计.ui文件    ①设计按钮       ②编译.ui       (2)修改mainwindow.h文件       (3)修改ma

    2024年02月05日
    浏览(42)
  • CloudCompare二次开发之如何通过PCL进行点云滤波?

      因笔者课题涉及点云处理,需要通过PCL进行点云数据一系列处理分析,查阅现有网络资料,对常用PCL点云滤波器进行代码实现,本文记录滤波器实现过程。    (1)设计.ui文件    ①设计按钮       ②编译.ui       (2)修改mainwindow.h文件       (3)修改

    2024年02月05日
    浏览(69)
  • PCL 点云变换

    一、原理简述 两片点云的刚体变换包含旋转和平移,变换矩阵的含义如下: 1、旋转矩阵 绕 x x

    2023年04月25日
    浏览(35)
  • PCL 点云组件聚类

    该算法与欧式聚类、DBSCAN聚类很是类似,聚类过程如下所述: 1. 首先,我们需要提供一个种子点集合,对种子点集合进行初始的聚类操作,聚类的评估器(即聚类条件),可以指定为法向评估,也可以是距离评估,以此我们就可以提取出点云中各个位置的组件部分。 2. 合并

    2024年02月10日
    浏览(42)
  • 点云分割-pcl区域生长算法

    1、本文内容 pcl的区域生长算法的使用和原理 2、平台/环境 cmake, pcl 3、转载请注明出处: https://blog.csdn.net/qq_41102371/article/details/131927376 参考:https://pcl.readthedocs.io/projects/tutorials/en/master/region_growing_segmentation.html#region-growing-segmentation https://blog.csdn.net/taifyang/article/details/124097186

    2024年02月15日
    浏览(42)
  • 3D点云处理:Opencv Pcl实现深度图转点云(附源码)

    订阅说明:如果要订阅,先看链接内容 看链接内容 看链接内容:订阅先看此内容 文章目录: 3D视觉个人学习目录 处理结果 文章中提供的深度图像,深度图像一般以.tiff和.png保存,可以通过Opencv中的

    2024年02月09日
    浏览(40)
  • PCL 改进点云双边滤波算法

    我们先来回顾一下之前该算法的计算过程,在二维图像领域中,双边滤波算法是通过考虑中心像素点到邻域像素点的距离(一边)以及像素亮度差值所确定的权重(另一边)来修正当前采样中心点的位置,从而达到平滑滤波效果。同时也会有选择性的剔除部分与当前采样点“差异”

    2024年02月07日
    浏览(42)
  • PCL - 3D点云配准(registration)介绍

    前面多篇博客都提到过,要善于从官网去熟悉一样东西。API部分详细介绍见 Point Cloud Library (PCL): Module registration 这里博主主要借鉴Tutorial里内容(博主整体都有看完) Introduction — Point Cloud Library 0.0 documentation 接下来主要跑下Registration中的sample例子 一.直接运行下How to use iter

    2024年02月12日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包