pcl入门之可视化

pcl中用于显示点云的可视化类通常有两个,即CloudViewer类和PCLVisualizer类。

1.简单点云可视化,可以用几行代码可视化点云数据,即CloudViewer类。代码如下

#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/visualization/cloud_viewer.h>// 包含相关头文件

typedef pcl::PointXYZ PointT;//定义点云类型

int main()
{
	// 读取点云
	pcl::PointCloud<PointT>::Ptr cloud(new pcl::PointCloud<PointT>);
	pcl::io::loadPCDFile("name.pcd", *cloud);//读取点云文件

	pcl::visualization::CloudViewer viewer("窗口名字");//给显示窗口起个名字
	viewer.showCloud(cloud);
	while (!viewer.wasStopped())
	{
		// todo::
	}

	system("pause");
	return 0;
}

2.应用PCLVisualizer类,PCLVisualizer是PCL可视化3D点云的主要类。其内部实现了添加各种3D对象以及交互的实现等,比其他类实现的功能更齐全.其基础操作可以显示点云、网格、设置颜色、连线。代码如下

#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>);
	pcl::io::loadPCDFile("name1.pcd", *cloud1);

	pcl::PointCloud<PointT>::Ptr cloud2(new pcl::PointCloud<PointT>);
	pcl::io::loadPCDFile("name2.pcd", *cloud2);

	// 定义对象
	pcl::visualization::PCLVisualizer viewer; 
	//设置背景颜色,默认黑色
	viewer.setBackgroundColor(100, 100, 100); // rgb

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

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

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

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

	viewer.addPolygonMesh(mesh);


	// 开始显示2种方法,任选其一
	// 1. 阻塞式
	viewer.spin();

	// 2. 非阻塞式
	while (!viewer.wasStopped())
	{
		viewer.spinOnce(100);
		boost::this_thread::sleep(boost::posix_time::microseconds(100000));
		// 可添加其他操作
	}

	system("pause");
	return 0;
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值