PCL点云处理_点云数据可视化(2)

代码:
1、简单可视化 cloud_viewer

#include<iostream>
#include<pcl/io/io.h>
#include<pcl/io/pcd_io.h>
#include<pcl/io/ply_io.h>
#include<pcl/visualization/cloud_viewer.h>
int user_data;
using std::cout;


void viewerOneOff(pcl::visualization::PCLVisualizer& viewer) {
	viewer.setBackgroundColor(3.0, 0.5, 2.0);   //设置背景颜色
}

int main() {
	//创建点云对象
	pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
	//点集路径
	char strfilepath[256] = "C:\\Users\\Empower\\Desktop\\exep\\bunny.pcd";
	//打开点集文件并将点集给到点云对象
	if (-1 == pcl::io::loadPCDFile(strfilepath, *cloud)) {
		cout << "error input!" << endl;
		return -1;
	}
	//输出点云大小
	//cout << cloud->points.size() << endl;
	//创建点云可视化对象
	pcl::visualization::CloudViewer viewer("Cloud Viewer");   //创建viewer对象
	//将点云显示到可视化窗体上
	viewer.showCloud(cloud);
	//设置背景颜色
	viewer.runOnVisualizationThreadOnce(viewerOneOff);
	//将窗体暂停
	system("pause");
	return 0;
}

2、高级可视化:
CloudViewer类本质上是 PCLVisualizer 类的简化封装,如果需要更多操作,则需要使用 PCLVisualizer 。

	//创建点云对象
	pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
	char strfilepath[256]= "C:\\Users\\Empower\\Desktop\\exep\\bunny.pcd";
	//将点集路径内的点集数据给到点云对象
	if(pcl::io::loadPCDFile(strfilepath,*cloud)==-1)
	{
		cout<<"输入错误" << endl;
		return -1;
	}
	//输出点集的大小
	cout << cloud->points.size() << endl;
	//创建点云对象
	pcl::visualization::PCLVisualizer newer("asa");	
	//参数初始化
	newer.initCameraParameters();
	//将点云数据添加到可视化对象
	newer.addPointCloud(cloud,"cloud1");
	//设置背景色
	newer.setBackgroundColor(1, 0, 1);
	//设置点的大小
	newer.setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 1, "cloud1");
	//阻塞式
	newer.spin();

	非阻塞式
	//while (!newer.wasStopped())
	//{
	//	newer.spinOnce(100);
	//	Sleep(1000);
	//}
	return 0;

运行效果:
在这里插入图片描述
3、同时显示两个点云图
代码:

#include <iostream> //标准输入/输出
#include <boost/thread/thread.hpp> //多线程
#include <pcl/common/common_headers.h>
#include <pcl/range_image/range_image.h> //深度图有关头文件
#include <pcl/io/pcd_io.h> //pcd文件输入/输出
#include <pcl/visualization/range_image_visualizer.h> //深度图可视化
#include <pcl/visualization/pcl_visualizer.h>
#include <pcl/console/parse.h> //命令行参数解析
#include <pcl/range_image/range_image.h>

using namespace std;
int main()
{
	//定义点云数据
	pcl::PointCloud<pcl::PointXYZ>::Ptr soure(new pcl::PointCloud<pcl::PointXYZ>);
	pcl::PointCloud<pcl::PointXYZ>::Ptr soure1(new pcl::PointCloud<pcl::PointXYZ>);
	//读取点云文本
	string filepath= "C:\\Users\\Empower\\Desktop\\exep\\bunny.pcd";
	string filepath1 = "C:\\Users\\Empower\\Desktop\\exep\\bunny1.pcd";
	pcl::io::loadPCDFile(filepath, *soure);
	pcl::io::loadPCDFile(filepath1, *soure1);
	cout << "点云加载成功!" << endl;
	
	//参数初始化
	boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer(new pcl::visualization::PCLVisualizer("3d visual"));
	viewer->initCameraParameters();
	//参数初始值
	int v1=0;
	//创建视口  X轴最小值 Y轴最小值 X轴最大值,Y轴最大值 占前半个窗体
	viewer->createViewPort(0, 0, 1.0 / 2.0, 1.0, v1);
	//设置背景色
	viewer->setBackgroundColor(1, 0,0, v1);
	//添加文字 X位置 Y位置 索引 视窗初始值
	viewer->addText("w1", 0, 0, "v1 text", v1);
	//创建可视化对象
	pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ> source_color(soure, 0, 0, 0);
	//将点云数据添加到可视化对象
	viewer->addPointCloud<pcl::PointXYZ>(soure, source_color, "sample cloud1", v1);
	//创建视口  X轴最小值 Y轴最小值 X轴最大值,Y轴最大值 占后半个窗体
	viewer->createViewPort(1.0 / 2.0, 0.0, 1.0, 1.0, v1);
	//设置背景色
	viewer->setBackgroundColor(0, 0, 1, v1);
	//添加文字 X位置 Y位置 索引 视窗初始值
	viewer->addText("w2", 10, 10, "v2 text", v1);
	//创建可视化对象
	pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ> source_color2(soure1, 0, 0, 0);
	//将点云数据添加到可视化对象
	viewer->addPointCloud<pcl::PointXYZ>(soure1, source_color2, "sample cloud2", v1);
	//设置点的大小
	viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 4, "sample cloud1");
	viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 1, "sample cloud2");

	viewer->addCoordinateSystem(1.0);
	//阻塞式显示
	viewer->spin();
	return 0;
}

运行效果
在这里插入图片描述

pcd文件百度网盘地址:
https://pan.baidu.com/s/1pXCRPkSB4fJT1hnh7xUbZA
提取码:btww

猜你喜欢

转载自blog.csdn.net/qq_51108184/article/details/122197876
今日推荐