VS+PCL实现读取并显示.pcd格式的点云文件

学习PCL,最初始的操作可能就是如何成功读取并显示点云文件中的点云数据,这也用来验证是否成功配置了操作环境。
现在分享一.cpp文件,用来读取并显示pcd点云文件里的数据。
如何创建工程查看:

https://blog.csdn.net/weixin_42734533/article/details/100065599

里面所用的配置属性的文件,选择:PCL1.9.0X64r.props

需要注意的是,上面链接里的内容,是说明调用OpenCV处理图片的,所以在PCL处理数据时所选择的属性文件和平台是不同的。

经过设置后,如下图所示:

VS+PCL实现读取并显示.pcd格式的点云文件_第1张图片
读取数据点云.pcd文件的.cpp程序代码如下:

//显示数据
/*
#include
#include
#include

int main(int argc, char** argv)   //运行时把命令行窗口传给主程序
{
	//创建了一个名为cloud的指针,储存XYZ类型的点云数据
	pcl::PointCloud::Ptr cloud(new pcl::PointCloud);

	//
	//*打开点云文件
	if (pcl::io::loadPCDFile("C://Users//Administrator//Desktop//test1//Project2//rabbit.pcd", *cloud) == -1)  //打开一个文件,如果有错,返回值-1,表示函数失败
	{
		PCL_ERROR("Couldn't read file rabbit.pcd\n");
		return(-1);
	}
	std::cout << "Loaded:" << cloud->width*cloud->height << "data points from test_pcd.pcd with the following fields:" << std::endl;  
	// ->表示提取cloud中的width
	for (size_t i = 0; i < cloud->points.size(); ++i)   //points.size表示点云数据的大小
	{
		std::cout << "      " << cloud->points[i].x << "   " << cloud->points[i].y << "   " << cloud->points[i].z << "   " << std::endl;
	}
	system("pause");
	return 0;
}

*/
//数据可视化
#include
#include
#include
#include 

void viewerOneOff(pcl::visualization::PCLVisualizer& viewer)    //设置背景颜色
{
	viewer.setBackgroundColor(1.0f, 0.7f, 1.0f);
}



int main(int argc, char** argv)
{
	pcl::PointCloud::Ptr cloud(new pcl::PointCloud);

	//
	//*打开点云文件
	//if (pcl::io::loadPCDFile("C://Users//Administrator//Desktop//test1//Project2//rabbit.pcd", *cloud) == -1)  
	if (pcl::io::loadPCDFile("C://Users//Administrator//Desktop//test1//Project2//table_scene_lms400.pcd", *cloud) == -1)
		//根据自己pcd文件的路径进行添加
	{
		PCL_ERROR("Couldn't read file rabbit.pcd\n");
		return(-1);
	}
	std::cout << cloud->points.size() << std::endl;   //points.size() 表示数据的大小也就是说点云文件中多少个点
	pcl::visualization::CloudViewer viewer("cloud viewer");  //showCloud 函数是同步的,在此处等待直到渲染显示为止
	viewer.showCloud(cloud);    //该注册函数在可视化时只调用一次

	viewer.runOnVisualizationThreadOnce(viewerOneOff);   //该注册函数在渲染输出是每次都调用

	while (!viewer.wasStopped())   
	{

	}
	system("pause");
	return 0;
}

程序中,上方部分被注释掉了,这部分内容是用来显示数据的,即点云文件中每一个数据点都会不断的显示出来。下方未注释的部分用来将点云数据可视化。可以通过注释掉下方程序,显示上方程序来查看点云数据中每一个点的具体坐标。

运行显示:

其中显示点云数据文件中存在460400个点。

VS+PCL实现读取并显示.pcd格式的点云文件_第2张图片

导致运行出错的一个常见原因,并做如下红线所划的设置:

VS+PCL实现读取并显示.pcd格式的点云文件_第3张图片

附上一个此内容的学习链接:

https://www.cnblogs.com/baby123/p/10950907.html

谢谢!

你可能感兴趣的:(VS+PCL实现读取并显示.pcd格式的点云文件)