1.Class pcl::visualization::CloudViewer
类CloudViewer 实现创建点云可视化的窗口,以及相关的可视化功能。
#include <pcl/visualization/cloud_viewer.h>
CloudViewer (const std::string &window_name)
// 构建可视化点云窗口,窗口名为window_name。
~CloudViewer ()
// 注销窗口相关资源。
void showCloud (const ColorCloud::ConstPtr &cloud, const std::string &cloudname="cloud")
// 在可视化点云窗口中显示cloud对应的点云,考虑到多个点云用键值cloudname来限定具体是哪个点云。
void showCloud (const ColorACloud::ConstPtr &cloud, const std::string &cloudname="cloud")
void showCloud (const GrayCloud::ConstPtr &cloud, const std::string &cloudname="cloud")
void showCloud (const MonochromeCloud::ConstPtr &cloud, const std::string &cloudname="cloud")
// 以上3个函数分别实现对不同类型点云的在窗口中的显示。
bool wasStopped (int millis_to_wait=1)
// 判断用户是否已关闭窗口,如果是则需要注销窗口, millis_to_wait为在注销窗口之前的等待。
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引用指向实现该回调函数的对象。
boost::signals2::connection registerMouseCallback (void(*callback)(const pcl::visualization::MouseEvent &, void *), void *cookie=NULL)
// 注册鼠标事件回调函数, cookie为回调时传递的参数,callback 为回调函数指针。
template<typename T >
boost::signals2::connection registerMouseCallback (void(T::*callback)(const pcl::visualization::MouseEvent &, void *), T &instance, void *cookie=NULL)
// 功能同上,其中instance引用指向实现该回调函数的对象。
boost::signals2::connection registerPointPickingCallback (void(*callback)(const pcl::visualization::PointPickingEvent &, void *), void *cookie=NULL)
// 点拾取事件回调函数, cookie为回调时传递的参数,callback为回调函数指针。
template<typename T >
boost::signals2::connection registerPointPickingCallback (void(T::*callback)(const pcl::visualization::PointPickingEvent &, void *), T &instance, void *cookie=NULL)
// 功能同上,其中instance 引用指向实现该回调函数的对象。
2.Class pcl::visualization::FloatImageUtils
类FloatImageUtils针对二维浮点数组的可视化类。
#include <pcl/visualization/common/float_image_utils.h>
static void getColorForFloat (float value, unsigned char &r, unsigned char &g, unsigned char &b)
// 静态成员,给定value属于[0,1],返回r、g、b颜色值。
static void getColorForAngle (float value, unsigned char &r, unsigned char &g, unsigned char &b)
// 静态成员,给定value属于[-PI,PI],返回r、g、b颜色值。
static void getColorForHalfAngle (float value, unsigned char &r, unsigned char &g, unsigned char &b)
// 静态成员,给定value属于[O,PI],返回r、g、b颜色值。
static unsigned char * getVisualImage (const float *float_image, int width, int height, float min_value=-std::numeric_limits< float >::infinity(), float max_value=std::numeric_limits< float >::infinity(), bool gray_scale=false)
// 静态成员,float_image为给定的浮点数二维数组﹐返回3× width × height的RGB图像, min_value, max_value为给定浮点数的最小和最大值,用于归一化 float_image中浮点数,如果gray_scale为真,则输出图像仍为RGB格式,但是灰度图像。
static unsigned char * getVisualImage (const unsigned short *float_image, int width, int height, unsigned short min_value=0, unsigned short max_value=std::numeric_limits< unsigned short >::max(), bool gray_scale=false)
// 静态成员,float_image为给定的正整数二维数组﹐返回3× width × height的RGB图像, min_value, max_value为给定正整数的最小和最大值,用于归一化 float_image中正整数,如果gray_scale为真,则输出图像仍为RGB格式,但是灰度图像。
static unsigned char * getVisualAngleImage (const float *angle_image, int width, int height)
// 功能同上,利用getColorForAngle来决定返回RGB的各个值。
static unsigned char * getVisualHalfAngleImage (const float *angle_image, int width, int height)
// 功能同上,利用getColorForHalfAngle来决定返回RGB的各个值。
3.Class pcl::visualization::PCLHistogramVisualizer
类PCLHistogram Visualizer实现对PCL中的直方图的可视化。
#include <pcl/visualization/histogram_visualizer.h>
PCLHistogramVisualizer ()
// PCL histogram visualizer 构造函数
virtual ~PCLHistogramVisualizer ()
// 析构函数
void spinOnce (int time=1)
// 刷新屏幕显示一次, time为允许重新渲染一次的最大时间ms数。
void spin ()
// 调用内部渲染循环。
void setBackgroundColor (const double &r, const double &g, const double &b)
// 设置视口的背景颜色,r、g,b为颜色, viewport为那个视口。
template<typename PointT >
bool addFeatureHistogram (const pcl::PointCloud< PointT > &cloud, int hsize, const std::string &id="cloud", int win_width=640, int win_height=200)
// 在新窗口中显示 cloud中存放的直方图,窗口大小宽度为win_ width,高度为win_height。考虑到cloud中有可能有多个点云, id来指定某个点云。
bool addFeatureHistogram (const pcl::PCLPointCloud2 &cloud, const std::string &field_name, const std::string &id="cloud", int win_width=640, int win_height=200)
// 功能同上,点云定义采用PointCloud2 , field_name指定点云中存储直方图的字段。
template<typename PointT >
bool addFeatureHistogram (const pcl::PointCloud< PointT > &cloud, const std::string &field_name, const int index, const std::string &id="cloud", int win_width=640, int win_height=200)
// 功能同上,点云定义采用PointCloud , field_name指定点云中存储直方图的字段,index为要从中提取直方图的点索引。
bool addFeatureHistogram (const pcl::PCLPointCloud2 &cloud, const std::string &field_name, const int index, const std::string &id="cloud", int win_width=640, int win_height=200)
// 功能同上,点云定义采用PointCloud2 , field_name指定点云中存储直方图的字段,index为要从中提取直方图的点索引。
template<typename PointT >
bool updateFeatureHistogram (const pcl::PointCloud< PointT > &cloud, int hsize, const std::string &id="cloud")
// 刷新已有直方图显示,cloud为存储直方图的点云, hsize为直方图大小, id 为点云的ID。
bool updateFeatureHistogram (const pcl::PCLPointCloud2 &cloud, const std::string &field_name, const std::string &id="cloud")
// 刷新已有直方图显示,cloud为存储直方图的点云, field_name指定点云中存储直方图的字段, id 为点云的ID。
template<typename PointT >
bool updateFeatureHistogram (const pcl::PointCloud< PointT > &cloud, const std::string &field_name, const int index, const std::string &id="cloud")
// 刷新已有直方图显示,cloud为存储直方图的点云, field_name指定点云中存储直方图的字段, id 为点云的ID。
bool updateFeatureHistogram (const pcl::PCLPointCloud2 &cloud, const std::string &field_name, const int index, const std::string &id="cloud")
// 刷新已有直方图显示,cloud为存储直方图的点云, field_name指定点云中存储直方图的字段, id 为点云的ID,index为要从中提取直方图的点索引。
void setGlobalYRange (float minp, float maxp)
// 设置Y方向的最小和最大值,用于映射直方图中的值。
void updateWindowPositions ()
// 刷新所有窗口的位置,使得所有窗口都排列到适当的位置。
4.Class pcl::visualization::ImageViewer
类ImageViewer实现对二维图像图形可视化,包括对图像层、透明设置、基本二维图形等支持。
#include <pcl/visualization/image_viewer.h>
ImageViewer (const std::string &window_title="")
// 构建二维可视化的窗口, window_title为窗口名。
virtual ~ImageViewer ()
// 析构函数
void showMonoImage (const unsigned char *data, unsigned width, unsigned height, const std::string &layer_id="mono_image", double opacity=1.0)
// 在窗口中显示二维灰度图形,data为二维图像数据,width为图像宽度, height为图像高度, layer_id为图层的ID号,opacity为该图层的透明度,1为不透明。
void addMonoImage (const unsigned char *data, unsigned width, unsigned height, const std::string &layer_id="mono_image", double opacity=1.0)
// 参数同上,功能为添加一灰度图像到图层 layer_id,但不显示,直到spin( )或spinOnce( )函数被调用。
void showMonoImage (const pcl::PointCloud< pcl::Intensity >::ConstPtr &cloud, const std::string &layer_id="mono_image", double opacity=1.0)
// 在窗口中显示二维灰度点云图像。
void addMonoImage (const pcl::PointCloud< pcl::Intensity >::ConstPtr &cloud, const std::string &layer_id="mono_image", double opacity=1.0)
// 功能为添加一灰度点云图像到图层。
void showMonoImage (const pcl::PointCloud< pcl::Intensity > &cloud, const std::string &layer_id="mono_image", double opacity=1.0)
// 在窗口中显示二维灰度点云图像。
void addMonoImage (const pcl::PointCloud< pcl::Intensity > &cloud, const std::string &layer_id="mono_image", double opacity=1.0)
// 功能为添加一灰度点云图像到图层。
void showMonoImage (const pcl::PointCloud< pcl::Intensity8u >::ConstPtr &cloud, const std::string &layer_id="mono_image", double opacity=1.0)
// 在窗口中显示二维灰度点云图像。
void addMonoImage (const pcl::PointCloud< pcl::Intensity8u >::ConstPtr &cloud, const std::string &layer_id="mono_image", double opacity=1.0)
// 功能为添加一灰度点云图像到图层。
void showMonoImage (const pcl::PointCloud< pcl::Intensity8u > &cloud, const std::string &layer_id="mono_image", double opacity=1.0)
// 在窗口中显示二维灰度点云图像。
void addMonoImage (const pcl::PointCloud< pcl::Intensity8u > &cloud, const std::string &layer_id="mono_image", double opacity=1.0)
// 功能为添加一灰度点云图像到图层。
void showRGBImage (const unsigned char *data, unsigned width, unsigned height, const std::string &layer_id="rgb_image", double opacity=1.0)
// 功能同showMonoImage函数,只是显示图像为彩色图像。
void addRGBImage (const unsigned char *data, unsigned width, unsigned height, const std::string &layer_id="rgb_image", double opacity=1.0)
// 功能同addMonoImage函数,只是添加图像为彩色图像。
template<typename T >
void showRGBImage (const typename pcl::PointCloud< T >::ConstPtr &cloud, const std::string &layer_id="rgb_image", double opacity=1.0)
// 功能同上函数,只是彩色图像数据来源于cloud的对象的彩色图像数据通道。
template<typename T >
void addRGBImage (const typename pcl::PointCloud< T >::ConstPtr &cloud, const std::string &layer_id="rgb_image", double opacity=1.0)
// 功能addRGBImage函数,只是彩色图像数据来源于cloud的对象的彩色图像数据通道。
template<typename T >
void showRGBImage (const pcl::PointCloud< T > &cloud, const std::string &layer_id="rgb_image", double opacity=1.0)
// 功能与上述函数类似,但输入数据不同。
template<typename T >
void addRGBImage (const pcl::PointCloud< T > &cloud, const std::string &layer_id="rgb_image", double opacity=1.0)
// 功能与上述函数类似,但输入数据不同。
void showFloatImage (const float *data, unsigned int width, unsigned int height, float min_value=std::numeric_limits< float >::min(), float max_value=std::numeric_limits< float >::max(), bool grayscale=false, const std::string &layer_id="float_image", double opacity=1.0)
// 在窗口中显示浮点数数据映射来的图像。
void addFloatImage (const float *data, unsigned int width, unsigned int height, float min_value=std::numeric_limits< float >::min(), float max_value=std::numeric_limits< float >::max(), bool grayscale=false, const std::string &layer_id="float_image", double opacity=1.0)
// 在窗口中添加浮点数数据映射来的图像。
void showShortImage (const unsigned short *short_image, unsigned int width, unsigned int height, unsigned short min_value=std::numeric_limits< unsigned short >::min(), unsigned short max_value=std::numeric_limits< unsigned short