前言
pcl可视化在点云处理中非常重要,这里将常见的几种类型总结一下。
一、显示点云
- 方法一
#define BOOST_TYPEOF_EMULATION
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL);
#include <pcl/visualization/cloud_viewer.h>
#include <pcl/visualization/pcl_visualizer.h>
/****显示点云****/
boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer(new pcl::visualization::PCLVisualizer("ShowCloud"));
viewer->setBackgroundColor(0, 0, 0);
viewer->addPointCloud<pcl::PointXYZ>(cloud, name);
//r,g,b取值0-1
viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_COLOR, red, green, blue, name);
viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, size, name);
- 方法二
//r,g,b取值0-255
pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ> single_color(cloud, red, green, blue);
viewer->addPointCloud<pcl::PointXYZ>(cloud, single_color, name);
viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, size, name);
二、显示直线
这里输入的两个点准不准确,直接影响对可视化的效果,能够在两个点上做点处理,让两个点就在直线上,显示的直线就会和拟合出来的直线参数一致,否则会有偏差
//r,g,b取值0-1
viewer->addLine(point1, point2, red, green, blue, name);
三、显示法线
显示法线前如果能对点云做点平滑处理,效果会好很多
viewer->addPointCloudNormals<pcl::PointXYZ, pcl::Normal>(cloud, normals, step, length, name);
四、显示平面
- pcl自带的函数(平面不能控制大小和颜色,且很小)
viewer->addPlane(*coefficients, x, y, z, name, 0);
- 某位博主写的函数,可以自行改变平面颜色和大小,挺好用:
https://blog.csdn.net/leonardohaig/article/details/108692116?spm=1001.2014.3001.5506
五、 显示球体
viewer->addSphere(center, radius, red, green, blue, name);
六、显示圆锥
//圆锥顶点坐标(3个值),圆锥轴线(顶点指向底面中心的有向线段)的方向和长度(三个值),圆锥锥角
//也即coefficients一共有7个值
viewer->addCone(*coefficients, name, 0);
七、显示圆柱
同四,参照博主的方法吧,当然pcl也有自带的函数调用
八、显示立方体
//xyz的六个值以此为:xman,xmin,ymax,ymin,zmax,zmin
viewer->addCube(xyz(0, 0), xyz(0, 1), xyz(1, 0), xyz(1, 1), xyz(2, 0), xyz(2, 1), red, green, blue, name);
总结
总结了一下pcl可视化的常用函数,后续遇到新的类型再补充添加。