Visual Studio 2022 配置 PCL 1.12.1 的问题小结

 更新时间:2022年08月12日 10:01:24   作者:ice_千秋  
这篇文章主要介绍了Visual Studio 2022 配置 PCL 1.12.1 的经验总结分享,本文通过图文实例相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

一、声明

个人目的是运用点云pcl,所以没有太深入,而且这仅仅只是我在安装过程中的一些经验总结,包括了一些需要注意的地方,以及个人觉得不错的教程推荐,如果有什么错误(当然都是自己新机操作实践过没有问题的)、不足还请多多包涵,不吝赐教(另外所有网盘的分享都不用去记或者copy提取码,自动填充的~)

1.1一些pcd文件分享

网站分享
1、

2、

点击zip文件就会自动下载,文件夹里面还有zip文件
3、

网盘分享
链接: https://pan.baidu.com/s/1LTI1Szx5sRrArnBnOUQyRQ  提取码: j5pa 
里面是上面网站中下载的,但是不全,后续或许会慢慢补上

单纯后面示例代码需要的rabbit.pcd

文件链接: https://pan.baidu.com/s/1unNJU9wA6rXP1jZqoXGkVg   提取码: bydj

二、初步操作

安装Visual Studio 和PCL

2.1安装pcl,OpenNI2:

各种教程里面这都很好,就不赘述了,当然,这里也给出一个个人认为不错的

win10系统VS2019配置点云库PCL1.12.1的教程与经验总结

PCL 1.12.1需要下载的文件

链接: https://pan.baidu.com/s/1f5XxRnpywRvGahLQhykTgg   提取码: c6wk

2.2环境变量:

环境变量添加以下路径:

个人在使用目前没毛病
D:\PCL 1.12.1\bin
D:\PCL 1.12.1\3rdParty\VTK\bin
D:\PCL 1.12.1\3rdParty\FLANN\bin
D:\PCL 1.12.1\3rdParty\Qhull\bin
D:\PCL 1.12.1\3rdParty\Boost\lib
D:\PCL 1.12.1\3rdParty\OpenNI2\Tools
D:\PCL 1.12.1\3rdParty\OpenNI2\Redist

安装完pcl会有这几个

于是就有如下另外一种添加方法:

%PCL_ROOT%\bin
%PCL_ROOT%\3rdParty\VTK\bin
%PCL_ROOT%\3rdParty\FLANN\bin
%PCL_ROOT%\3rdParty\Qhull\bin
%PCL_ROOT%\3rdParty\OpenNI2\Tools
%OPENNI2_REDIST64%
%OPENNI2_LIB64%
%OPENNI2_INCLUDE64%

环境变量的修改教程里面也是有不同,本人也不是很懂┭┮﹏┭┮

第二种添加方法就是(一点个人见解,不排除错误的可能)
1、 D:\PCL 1.12.1\3rdParty\OpenNI2\Redist替换成 %OPENNI2_REDIST64%
2、D:\PCL 1.12.1 替换成__%PCL_ROOT%__
3、也就是用上面图片里面的替换 变量

配置了系统环境变量后不会出现 找不到 .dll文件 的问题,并不需要在Visual Studio中执行打开属性页,选择配置属性 -> 调试 -> 环境,粘贴下面环境这一操作(值得注意的是,pcl的配置是可以永久配置的,但是永久配置的时候并没有以上在Visual Studio中配置环境的地方 (或许是有,但是我目前没有看到┭┮﹏┭┮)

PATH=$(PCL_ROOT)\bin;$(PCL_ROOT)\3rdParty\FLANN\bin;$(PCL_ROOT)\3rdParty\VTK\bin;$(PCL_ROOT)\Qhull\bin;$(PCL_ROOT)\3rdParty\OpenNI2\Tools;$(PATH)

三、Visual Studio中的操作

需要 永久配置 \color{RED}{永久配置} 永久配置的可以先看看一下两个链接(看一个也行,看个人喜好视频还是文字),然后再去进行配置:

视频教程

博客教程

其中的核心点就是在属性管理器操作。

注意 \color{RED}{注意} 注意:可能在永久配置的时候属性管理器界面没有Microsoft.Cpp.x64.user,可以从下面下载,然后放到文件夹里面,路径在下面

C:\Users\用户名\AppData\Local\Microsoft\MSBuild\v4.0//该文件的C盘地址

想要在C盘里面找到需要有如下操作:

链接: https://pan.baidu.com/s/1Bq7XECsM7Kka4zN37bs7lw    提取码: 6ie7
安装好之后机会在上面的目录下找到了,Visual Studio里面也会有了

3.1包含目录:

和后面的库目录相同的是,主要是看**D:\PCL 1.12.1(我的pcl安装目录)**后面的内容

如下是1.12.1版本的包含目录:

D:\PCL 1.12.1\3rdParty\Eigen\eigen3
D:\PCL 1.12.1\3rdParty\FLANN\include
D:\PCL 1.12.1\3rdParty\VTK\include\vtk-9.1
D:\PCL 1.12.1\3rdParty\Qhull\include
D:\PCL 1.12.1\include\pcl-1.12
D:\PCL 1.12.1\3rdParty\Boost\include\boost-1_78
D:\PCL 1.12.1\3rdParty\OpenNI2\Include

3.2 库目录:

如下是1.12.1版本的库目录:

D:\PCL 1.12.1\3rdParty\Boost\lib
D:\PCL 1.12.1\3rdParty\FLANN\lib
D:\PCL 1.12.1\3rdParty\OpenNI2\Lib
D:\PCL 1.12.1\3rdParty\Qhull\lib
D:\PCL 1.12.1\3rdParty\VTK\lib
D:\PCL 1.12.1\lib

3.3 附加依赖项:

参考以下链接自己获取依赖项,当然,各种教程里面都会有对应版本需要的依赖项,在此就不给出具体的了

VS中PCL库附加依赖项配置
当然上面最开始的链接里面也有自己获取的方法

3.4 预处理器定义:

这部分在最开始给出的教程链接里面没有,但是个人没有配置之前运行程序是走不通的,但是各种教程里面给出的预处理器定义也不尽相同(我也不懂其中奥妙┭┮﹏┭┮)以下采用一个片段即可

个人正在用的,目前测试能行
BOOST_USE_WINDOWS_H
NOMINMAX
_CRT_SECURE_NO_DEPRECATE

_SCL_SECURE_NO_WARNINGS
_CRT_SECURE_NO_WARNINGS

_CRT_SECURE_NO_WARNINGS
_SCL_SECURE_NO_WARNINGS
_SILENCE_FPOS_SEEKPOS_DEPRECATION_WARNING

_CRT_SECURE_NO_WARNINGS
BOOST_ALL_NO_LIB
BOOST_USE_WINDOWS_H
NOMINMAX
_SCL_SECURE_NO_WARNINGS
_SILENCE_FPOS_SEEKPOS_DEPRECATION_WARNING

3.5 SDL检查

SDL检查改为否

(单独做一个标题空着不太好看,哈哈)

3.6 测试代码

3.6.1 一个不需要点云文件的(官方给出的实例):

#include <iostream>
#include <pcl/point_types.h>
#include <pcl/filters/passthrough.h>
 
int
 main (int argc, char** argv)
{
  pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>);
  pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_filtered (new pcl::PointCloud<pcl::PointXYZ>);
 
  // Fill in the cloud data
  cloud->width  = 5;
  cloud->height = 1;
  cloud->points.resize (cloud->width * cloud->height);
 
  for (std::size_t i = 0; i < cloud->points.size (); ++i)
  {
    cloud->points[i].x = 1024 * rand () / (RAND_MAX + 1.0f);
    cloud->points[i].y = 1024 * rand () / (RAND_MAX + 1.0f);
    cloud->points[i].z = 1024 * rand () / (RAND_MAX + 1.0f);
  }
 
  std::cerr << "Cloud before filtering: " << std::endl;
  for (std::size_t i = 0; i < cloud->points.size (); ++i)
    std::cerr << "    " << cloud->points[i].x << " " 
                        << cloud->points[i].y << " " 
                        << cloud->points[i].z << std::endl;
 
  // Create the filtering object
  pcl::PassThrough<pcl::PointXYZ> pass;
  pass.setInputCloud (cloud);
  pass.setFilterFieldName ("z");
  pass.setFilterLimits (0.0, 1.0);
  //pass.setFilterLimitsNegative (true);
  pass.filter (*cloud_filtered);
 
  std::cerr << "Cloud after filtering: " << std::endl;
  for (std::size_t i = 0; i < cloud_filtered->points.size (); ++i)
    std::cerr << "    " << cloud_filtered->points[i].x << " " 
                        << cloud_filtered->points[i].y << " " 
                        << cloud_filtered->points[i].z << std::endl;
 
  return (0);
}

运行结果:

3.6.2 一个需要点云文件的(直接将pcd文件放在工作目录下或许更方便):

#include<pcl/visualization/cloud_viewer.h>
#include<iostream>//标准C++库中的输入输出类相关头文件。
#include<pcl/io/io.h>
#include<pcl/io/pcd_io.h>//pcd 读写类相关的头文件。
#include<pcl/io/ply_io.h>
#include<pcl/point_types.h> //PCL中支持的点类型头文件。

int main()
{
	pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new 	pcl::PointCloud<pcl::PointXYZ>);
	char strfilepath[256] = "rabbit.pcd";//将这个改成自己的pcd文件就可以
	if (-1 == pcl::io::loadPCDFile(strfilepath, *cloud)) //打开点云文件
	{
		std::cout << "error input!" << std::endl;
		return -1;
	}
	std::cout << cloud->points.size() << std::endl;
	pcl::visualization::CloudViewer viewer("Cloud Viewer");     //创建viewer对象
	viewer.showCloud(cloud);
	system("pause");
	return 0;
}

运行结果(三个窗口,其中一个如下):

四、最后

如果有不足或者错误(关于错误:以上的都是自己新机操作实践过没有问题的,应该不会有什么错误),还请指正。

到此这篇关于Visual Studio 2022 配置 PCL 1.12.1 的经验总结分享的文章就介绍到这了,更多相关Visual Studio 2022 配置 PCL内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C语言全部内存操作函数的实现详细讲解

    C语言全部内存操作函数的实现详细讲解

    这篇文章主要介绍了C语言全部内存操作函数的实现详细讲解,作者用图文代码实例讲解的很清晰,有感兴趣的同学可以研究下
    2021-02-02
  • C/C++实现获取硬盘序列号的示例代码

    C/C++实现获取硬盘序列号的示例代码

    获取硬盘的序列号、型号和固件版本号,此类功能通常用于做硬盘绑定或硬件验证操作,下面我们就来学习一下如何使用C/C++实现获取硬盘序列号吧
    2023-11-11
  • C++趣味算法之侦探推理

    C++趣味算法之侦探推理

    本文详细讲解了C++趣味算法之侦探推理,文中通过示例代码介绍的非常详细。对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-12-12
  • C++实现LeetCode(19.移除链表倒数第N个节点)

    C++实现LeetCode(19.移除链表倒数第N个节点)

    这篇文章主要介绍了C++实现LeetCode(19.移除链表倒数第N个节点),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • 你真的知道C++对象大小吗?

    你真的知道C++对象大小吗?

    这篇文章主要给大家介绍了关于C++对象大小的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • C++数据结构与算法之双缓存队列实现方法详解

    C++数据结构与算法之双缓存队列实现方法详解

    这篇文章主要介绍了C++数据结构与算法之双缓存队列实现方法,结合实例形式分析了双缓存队列的原理、实现方法与相关注意事项,需要的朋友可以参考下
    2017-08-08
  • C++文件读取的4种情况汇总

    C++文件读取的4种情况汇总

    前几天要用到C++读取文本文件,就学习了一下几种不同的读取方法,下面这篇文章主要给大家介绍了关于C++文件读取的4种情况,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-01-01
  • C++二叉搜索树BSTree使用详解

    C++二叉搜索树BSTree使用详解

    二叉搜索树(Binary Search Tree)又称二叉排序树,也称作二叉查找树它或者是一棵空树,或者是具有以下性质的二叉树,若它的左子树不为空,则左子树上所有节点的值都小于根节点的值,若它的右子树不为空,则右子树上所有节点的值都大于根节点的值
    2023-03-03
  • C++的函数与指针

    C++的函数与指针

    今天小编就为大家分享一篇关于C++函数与指针的文章,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2021-10-10
  • C++常量指针,指针常量,指向常量的常指针详解

    C++常量指针,指针常量,指向常量的常指针详解

    刚接触到指针时,关于C++常量指针,指针常量,指向常量的常指针容易混淆,所以整理下,希望能够帮助自己也帮助到大家
    2021-10-10

最新评论