pcl点云可视化总结


前言

pcl可视化在点云处理中非常重要,这里将常见的几种类型总结一下。

一、显示点云

  1. 方法一
#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);
  1. 方法二
//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);

四、显示平面

  1. pcl自带的函数(平面不能控制大小和颜色,且很小)
viewer->addPlane(*coefficients, x, y, z, name, 0);
  1. 某位博主写的函数,可以自行改变平面颜色和大小,挺好用:
    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可视化的常用函数,后续遇到新的类型再补充添加。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PCL(Point Cloud Library)是一个开源的点云处理库,提供了点云数据的各种算法和工具。而MFC(Microsoft Foundation Classes)是一个用于开发Windows应用程序的C++类库。 要实现PCL点云可视化内嵌MFC,首先需要在MFC的应用程序中创建一个显示图像的控件,可以使用MFC中的CWnd派生类或自定义的继承自CWnd的窗口类。 在创建好显示点云的控件后,需要通过PCL库的相关接口将点云数据加载到内存中。可以使用PCL中的PointCloud类来存储点云数据,使用PointCloud类的成员函数来进行点云数据的操作。 接下来,可以在MFC应用程序的消息循环中,利用PCL提供的可视化工具类(如pcl::visualization::PCLVisualizer)来实现点云可视化。可以将点云数据通过vtkSmartPointer<wndObj>将点云数据传递给可视化对象,并利用该可视化对象的成员函数来设置点云的颜色、大小、透明度等属性。 最后,通过在控件的绘制函数中调用可视化对象的成员函数来实现点云的实时更新和渲染。可以将绘制函数与消息循环结合起来,使得点云可以根据用户的操作实时更新显示。 总结起来,实现PCL点云可视化内嵌MFC的步骤包括:创建显示点云的控件,加载点云数据到内存,利用PCL提供的可视化工具类实现点云可视化,以及在控件的绘制函数中更新和渲染点云。这样就能够在MFC应用程序中实现PCL点云可视化了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值