pcl库中viewer背景色的设置技巧和给点云上色的三种方法

viewer.setBackgroundColor(0, 0, 0);

其中的三个值分别表示rgb

范围为0-1,自己怎么设置颜色均不是想要的,而自己只会设置上面的颜色,要么全黑,要么全白,或者全红等纯色。

如何达到自己的想要的效果呢?

仔细看代码中的数值和下面rgb图中的颜色值,一下就明白了怎么回事了

viewer.setBackgroundColor(128.0 / 255.0, 138.0 / 255.0, 135.0 / 255.0);

 

运行结果,就是上面的颜色

换成其他颜色,比如类似cc里面的颜色

viewer.setBackgroundColor(8.0 / 255.0, 79.0 / 255.0, 117.0 / 255.0);

 

更多颜色

 

给点云上色代码

//设置点云颜色
 
pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ>single_color(cloud,0,255,0); //设置背景色 viewer->setBackgroundColor(0,0,0.7)

 给点云的某个字段进行上色

boost::shared_ptr<pcl::visualization::PCLVisualizer> genericHandler(pcl::PointCloud<pcl::PointXYZ>::Ptr cloud)
{
	boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer(new pcl::visualization::PCLVisualizer("3D Cloud"));
	pcl::visualization::PointCloudColorHandlerGenericField<pcl::PointXYZ> rgb(cloud, "y");
	viewer->addPointCloud(cloud, rgb, "sample cloud");
	return viewer;
}

 给点云沿着Z方向的变化上色/渐变色

void visualize_pcdOne(pcl::PointCloud<pcl::PointXYZ>::Ptr pcd_src)
{

	//创建初始化目标
	pcl::visualization::PCLVisualizer viewer("3D Viewer");
	// 设置单一颜色
	//pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ> color_h(pcd_src, 0, 255, 0);//点云为绿色
	//按照z方向深度进行渲染(带渐变色)
	pcl::visualization::PointCloudColorHandlerGenericField<pcl::PointXYZ> color_h(pcd_src, "z");
	// 添加坐标系
	viewer.addCoordinateSystem(0.3);    // 读取的点云单位是什么,这个单位就是什么
	viewer.setBackgroundColor(0.2, 0.2, 0.2);//背景色为深棕色
	viewer.addPointCloud<pcl::PointXYZ>(pcd_src, color_h, "source cloud");
	while (!viewer.wasStopped())
	{
		viewer.spinOnce(100);
		//boost 需要加头文件#include <boost/thread/thread.hpp>
		boost::this_thread::sleep(boost::posix_time::microseconds(100000));
	}
}

猜你喜欢

转载自blog.csdn.net/sunnyrainflower/article/details/131309889