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));
}
}