前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PCL 可视化

PCL 可视化

作者头像
点云PCL博主
发布2019-07-30 11:34:11
1.9K0
发布2019-07-30 11:34:11
举报
文章被收录于专栏:点云PCL

可视化(visualization)是利用计算机图形学和图像处理技术,将数据转换图像在屏幕上显示出来,并进行交互处理的的理论,方法和技术,

pcl_visualization库建立了能够快速建立原型的目的和可视化算法对三维点云数据操作的结果。类似于opencv的highgui例程显示二维图像,在屏幕上绘制基本的二维图形,库提供了以下几点:

(1)渲染和设置视觉特性的方法(如颜色、大小、透明度等)在PCL任意n维的点云数据集pcl::PointCloud<T> format

(2)在屏幕上绘制基本的3D形状的方法(例如,圆柱体,球体,线,多边形等),无论是从点集或参数方程;

(3)一个直方图可视化模块(pclhistogramvisualizer)的二维图;

(4)大量的几何和颜色处理pcl::PointCloud<T> datasets

(5)a pcl::RangeImage 可视化模块

.

1. class pcl::visualization::CloudViewer 类CloudViewer实现创建点云可视化的窗口,以及相关的可视化功能

Public Member Functions

CloudViewer (const std::string &window_name) 构建可视化点云窗口,窗口名为window_name

~CloudViewer () 注销窗口相关资源

void

showCloud (const ColorCloud::ConstPtr &cloud, const std::string &cloudname="cloud")

可视化窗口显示cloud对应的点云,考虑到多个点云用键值cloudname来限定是哪一个点云

bool

wasStopped (int millis_to_wait=1)

判断用户是否已经关闭窗口,如果是则需要注销窗口

void

runOnVisualizationThread (VizCallable x, const std::string &key="callable")

在窗口运行期间处理x的回调函数,key为键值标识此回调函数,知道窗口关闭

void

runOnVisualizationThreadOnce (VizCallable x)

值调用回调函数一次

void

removeVisualizationCallable (const std::string &key="callable")

删除key对应的回调函数

boost::signals2::connection

registerKeyboardCallback (void(*callback)(const pcl::visualization::KeyboardEvent &, void *), void *cookie=NULL)

注册键盘事件回调函数,cookie为回调时的参数,callback为回调函数的指针

template<typename T >

boost::signals2::connection

registerKeyboardCallback (void(T::*callback)(const pcl::visualization::KeyboardEvent &, void *), T &instance, void *cookie=NULL)

同上,其中的instance 指向是实现该回到函数的对象

(2)太多了这里就贴出所有的关于可视化的类 对于类的成员就不再一一介绍

class

pcl::visualization::CloudViewer

Simple point cloud visualization class. More...

class

pcl::visualization::FloatImageUtils

Provide some gerneral functionalities regarding 2d float arrays, e.g., for visualization purposes More...

class

pcl::visualization::PCLHistogramVisualizer

PCL histogram visualizer main class. More...

class

pcl::visualization::ImageViewerInteractorStyle

An image viewer interactor style, tailored for ImageViewer. More...

struct

pcl::visualization::ImageViewer::ExitMainLoopTimerCallback

struct

pcl::visualization::ImageViewer::ExitCallback

class

pcl::visualization::ImageViewer

ImageViewer is a class for 2D image visualization. More...

class

pcl::visualization::PCLVisualizerInteractorStyle

PCLVisualizerInteractorStyle defines an unique, custom VTK based interactory style for PCL Visualizer applications. More...

struct

pcl::visualization::Figure2D

Abstract class for storing figure information. More...

class

pcl::visualization::PCLPainter2D

PCL Painter2D main class. More...

class

pcl::visualization::PCLPlotter

PCL Plotter main class. More...

class

pcl::visualization::PCLVisualizer

PCL Visualizer main class. More...

class

pcl::visualization::PointCloudColorHandler< PointT >

Base Handler class for PointCloud colors. More...

class

pcl::visualization::PointCloudColorHandlerRandom< PointT >

Handler for random PointCloud colors (i.e., R, G, B will be randomly chosen) More...

class

pcl::visualization::PointCloudColorHandlerCustom< PointT >

Handler for predefined user colors. More...

class

pcl::visualization::PointCloudColorHandlerRGBField< PointT >

RGB handler class for colors. More...

class

pcl::visualization::PointCloudColorHandlerHSVField< PointT >

HSV handler class for colors. More...

等等*****************************************8

应用实例

cloud_viewer.cpp:

代码语言:javascript
复制
#include <pcl/visualization/cloud_viewer.h>  
#include <iostream>                           
#include <pcl/io/io.h>                     
#include <pcl/io/pcd_io.h>               //PCD文件读取
/*函数是作为回调函数,在主函数中只注册一次 ,函数实现对可视化对象背景颜色的设置,添加一个圆球几何体*/
int user_data;  
void viewerOneOff 
         (pcl::visualization::PCLVisualizer& viewer)
{viewer.setBackgroundColor (1.0, 0.5, 1.0);//背景颜色
pcl::PointXYZ o;             //存储球的圆心位置
o.x = 1.0;
   o.y = 0;
   o.z = 0;
 viewer.addSphere (o, 0.25, "sphere", 0);             //添加圆球几何对象
std::cout << "i only run once" << std::endl;  
}   /*作为回调函数,在主函数中注册后每帧显示都执行一次,函数具体实现在可视化对象中添加一个刷新显示字符串**/
 void viewerPsycho 
      (pcl::visualization::PCLVisualizer& viewer)
{   static unsigned count = 0;
   std::stringstream ss;
   ss << "Once per viewer loop: " << count++;
   viewer.removeShape ("text", 0);
   viewer.addText (ss.str(), 200, 300, "text", 0);  
user_data++;
}  /*首先加载点云文件到点云对象,并初始化可视化对象viewer,注册上面的回调函数,执行循环直到收到关闭viewer的消息退出程序*/  
int main ()
{
pcl::PointCloud<pcl::PointXYZRGBA>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZRGBA>);    //声明cloudpcl::io::loadPCDFile ("my_point_cloud.pcd", *cloud);
   pcl::visualization::CloudViewer viewer("Cloud Viewer");//创建viewer对象    
 //showCloud函数是同步的,在此处等待直到渲染显示为止  
 viewer.showCloud(cloud);    //该注册函数在可视化的时候只执行一次   
viewer.runOnVisualizationThreadOnce (viewerOneOff);  
   //该注册函数在渲染输出时每次都调用   
    viewer.runOnVisualizationThread (viewerPsycho);    while (!viewer.wasStopped ())
   {    //此处可以添加其他处理  
user_data++;
   }    return 0;
}

编译结果如下

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 点云PCL 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图像处理
图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档