1、下载PCL 下载地址:https://github.com/PointCloudLibrary/pcl/releases
(此时已更新为PCL1.21)
2、安装PCL,勾选第二项,方便后续的环境变量配置,(如果有弹出openNI2的安装,选(PCL安装路径)\3rdParty目录下;
3、将pcl-1.11.1-pdb-msvc2019-win64文件夹下的文件复制到PCL安装路径下的bin文件夹内
4、配置环境变量
5、打开VS,新建一个空项目,注意创建一个源文件,否则项目属性里面没有调试选项,配置项目属性如下(平台选择debug 64)
6、C++选项卡下面的语言一览,将符合模式改为否
7、C++选项卡下面的所有选项一览,将SDL检查改为否
8、新建项目属性表,配置项目属性表,配置如下
包含目录
库目录
预处理命令包含(_SCL_SECURE_NO_WARNINGS
_CRT_SECURE_NO_WARNINGS)
更改SDL检查为否
配置链接输入(PCL根目录下的lib文件(H:\PCL\PCL 1.11.1\lib)和PCL\3rdParty\VTK下的lib文件,因为配置的是debug,因此选择的文件应为d.lib结尾,vtk下为gd.lib);
在相应的lib目录下,打开控制台后输入 dir /b *d.lib >debug.txt 可以快速获取相应的lib文件名,vtk的lib文件夹下命令为dir /b *gd.lib >debug.txt
配置结束
测试代码
#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);
}
————————————————
版权声明:本文为CSDN博主「Wxy1122.」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Wxy971122/article/details/117018767
参考链接:Win10+VS2019环境下配置点云库PCL1.11.1(超详细)_Wxy1122.的博客-CSDN博客