PCL学习笔记Day3

数据可视化
// 点云可视化可以显示点云、网格、设置颜色、 连线
#include<pcl/io/pcd_io.h>
#include<pcl/io/ply_io.h>
#include<pcl/point_types.h>
// 包含相关的头文件
#include<pcl/visualization/pcl_visualizer.h>

typedef pcl::PointXYZ PointT;

int main() {
    
    
	// 读取点云
	pcl::PointCloud<PointT>::Ptr cloud1(new pcl::PointCloud<PointT>);
	if (pcl::io::loadPCDFile("rabbit.pcd", *cloud1) == -1) {
    
    
		PCL_ERROR("读取rabbit文件失败");
		return -1;
	}
	pcl::PointCloud<PointT>::Ptr cloud2(new pcl::PointCloud<PointT>);
	if (pcl::io::loadPCDFile("saveRabbit.pcd", *cloud2) == -1) {
    
    
		PCL_ERROR("读取save文件失败");
		return -1;
	}
	// 定义对象
	pcl::visualization::PCLVisualizer viewer;
	// 设置背景颜色、默认颜色
	viewer.setBackgroundColor(100, 100, 100);

	// 显示点云数据
	//"cloud1"为显示id,默认cloud 显示多个点云时用默认会报警
	viewer.addPointCloud(cloud1, "cloud1");

	pcl::visualization::PointCloudColorHandlerCustom<PointT> red(cloud2, 255, 0, 0);
	// 将点云设置颜色,默认白色
	viewer.addPointCloud(cloud2, red, "cloud2");

	//将两个点连线
	PointT temp1 = cloud1->points[0];
	PointT temp2 = cloud2->points[1];
	//viewer.addLine(temp1, temp2, "line0");
	// 设置线的颜色
	viewer.addLine(temp1, temp2, 255, 0, 0, "line0");

	// 显示网格数据
	pcl::PolygonMesh mesh;
	pcl::io::loadPLYFile("test.ply", mesh);

	// 显示
	// 阻塞式
	viewer.spin();
	// 非阻塞式
	//while (!viewer.wasStopped())
	//{
    
    
	//	viewer.spinOnce(100);
	//	std::this_thread::sleep_for(std::chrono::microseconds(100000));
	//}
	system("pause");
	return 0;
}

参考链接:https://github.com/MNewBie/PCL-Notes/blob/master/chapter2.md

https://zhuanlan.zhihu.com/p/268524083

猜你喜欢

转载自blog.csdn.net/weixin_44135909/article/details/121371793