PCL函数库摘要——可视化

15 篇文章 7 订阅

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 >::max(), bool grayscale=false, const std::string &layer_id="short_image", double opacity=1.0) 
//  在窗口中显示无符号整型数据映射来的图像。  
void  addShortImage (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 >::max(), bool grayscale=false, const std::string &layer_id="short_image", double opacity=1.0) 
//  在窗口中添加无符号整型数据映射来的图像。  
void  showAngleImage (const float *data, unsigned width, unsigned height, const std::string &layer_id="angle_image", double opacity=1.0) 
//  在窗口显示由角度映射颜色方式得到的图像。
void  addAngleImage (const float *data, unsigned width, unsigned height, const std::string &layer_id="angle_image", double opacity=1.0) 
//  在窗口添加由角度映射颜色方式得到的图像。  
void  showHalfAngleImage (const float *data, unsigned width, unsigned height, const std::string &layer_id="half_angle_image", double opacity=1.0) 
//  在窗口显示由半角度映射颜色方式得到的图像。
void  addHalfAngleImage (const float *data, unsigned width, unsigned height, const std::string &layer_id="half_angle_image", double opacity=1.0) 
//  在窗口添加由半角度映射颜色方式得到的图像。  
void  markPoint (size_t u, size_t v, Vector3ub fg_color, Vector3ub bg_color=red_color, double radius=3.0, const std::string &layer_id="points", double opacity=1.0) 
//  标志出窗口中的一点,u、v为标志点的窗口坐标,fg_color 为标识点颜色, bg_color为该图层背景色, radius为标识点大小, layer_id为图层ID,opacity 为该图层的透明度。
void  markPoints (const std::vector< int > &uv, Vector3ub fg_color, Vector3ub bg_color=red_color, double size=3.0, const std::string &layer_id="markers", double opacity=1.0) 
//  标志出窗口中的一点,uv为标志点的窗口坐标向量,fg_color 为标识点颜色, bg_color为该图层背景色, radius为标识点大小, layer_id为图层ID,opacity 为该图层的透明度。
void  markPoints (const std::vector< float > &uv, Vector3ub fg_color, Vector3ub bg_color=red_color, double size=3.0, const std::string &layer_id="markers", double opacity=1.0) 
//  标志出窗口中的一点,uv为标志点的窗口坐标向量,fg_color 为标识点颜色, bg_color为该图层背景色, radius为标识点大小, layer_id为图层ID,opacity 为该图层的透明度。  
void  setWindowTitle (const std::string &name) 
//  设置窗口名。  
void  spin () 
//  调用内部重绘函数。
void  spinOnce (int time=1, bool force_redraw=true) 
//  调用一次内部重绘函数, time为最长绘制时间, force_redraw为true表示强制重绘。
boost::signals2::connection  registerKeyboardCallback (void(*callback)(const pcl::visualization::KeyboardEvent &, void *), void *cookie=NULL) 
//  为键入事件注册回调函数。
template<typename T >  
boost::signals2::connection  registerKeyboardCallback (void(T::*callback)(const pcl::visualization::KeyboardEvent &, void *), T &instance, void *cookie=NULL) 
//  为键入事件注册回调函数。 
boost::signals2::connection  registerKeyboardCallback (boost::function< void(const pcl::visualization::KeyboardEvent &)> cb) 
//  为键入事件注册boost::回调函数。  
boost::signals2::connection  registerMouseCallback (void(*callback)(const pcl::visualization::MouseEvent &, void *), void *cookie=NULL) 
//  为鼠标点击事件注册boost::回调函数。 
template<typename T >  
boost::signals2::connection  registerMouseCallback (void(T::*callback)(const pcl::visualization::MouseEvent &, void *), T &instance, void *cookie=NULL) 
//  为鼠标点击事件注册回调函数。 
boost::signals2::connection  registerMouseCallback (boost::function< void(const pcl::visualization::MouseEvent &)> cb) 
//  为鼠标点击事件注册回调函数。 
void  setPosition (int x, int y) 
//  设置窗口在屏幕坐标系中的位置。  
void  setSize (int xw, int yw) 
//  设置窗口大小。
int *  getSize () 
//  返回窗口大小。
bool  wasStopped () const 
//  判断用户是否关闭窗口。  
void  close () 
//  Stop the interaction and close the visualizaton window. More...  
bool  addCircle (unsigned int x, unsigned int y, double radius, const std::string &layer_id="circles", double opacity=1.0) 
//  添加圆面,xy为圆心在窗口坐标系下的坐标,radius为半径。  
bool  addCircle (unsigned int x, unsigned int y, double radius, double r, double g, double b, const std::string &layer_id="circles", double opacity=1.0) 
//  功能同上,r、g、b 为添加圆面的颜色。
bool  addRectangle (const pcl::PointXY &min_pt, const pcl::PointXY &max_pt, const std::string &layer_id="rectangles", double opacity=1.0) 
//  添加矩形,min_pt,max_pt为矩形在窗口坐标系下的左下角和右上角。
bool  addRectangle (const pcl::PointXY &min_pt, const pcl::PointXY &max_pt, double r, double g, double b, const std::string &layer_id="rectangles", double opacity=1.0) 
// 功能同上,r、g、b为添加矩形的颜色。
bool  addRectangle (unsigned int x_min, unsigned int x_max, unsigned int y_min, unsigned int y_max, const std::string &layer_id="rectangles", double opacity=1.0) 
//  添加矩形,x_min、 x_ max,y _ min、y_max为矩形在窗口坐标系下的x与y 的范围。  
bool  addRectangle (unsigned int x_min, unsigned int x_max, unsigned int y_min, unsigned int y_max, double r, double g, double b, const std::string &layer_id="rectangles", double opacity=1.0) 
// 功能同上,r、g、b为添加矩形的颜色。
template<typename T >  
bool  addRectangle (const typename pcl::PointCloud< T >::ConstPtr &image, const T &min_pt, const T &max_pt, const std::string &layer_id="rectangles", double opacity=1.0) 
//  添加一给定颜色的矩形框。
template<typename T >  
bool  addRectangle (const typename pcl::PointCloud< T >::ConstPtr &image, const T &min_pt, const T &max_pt, double r, double g, double b, const std::string &layer_id="rectangles", double opacity=1.0) 
//  添加一给定颜色的矩形框。
template<typename T >  
bool  addRectangle (const typename pcl::PointCloud< T >::ConstPtr &image, const pcl::PointCloud< T > &mask, double r, double g, double b, const std::string &layer_id="rectangles", double opacity=1.0) 
//  添加一给定颜色的矩形框,矩形框中有mask。
template<typename T >  
bool  addRectangle (const typename pcl::PointCloud< T >::ConstPtr &image, const pcl::PointCloud< T > &mask, const std::string &layer_id="image_mask", double opacity=1.0) 
//  添加一红色的矩形框,矩形框中有mask。
bool  addFilledRectangle (unsigned int x_min, unsigned int x_max, unsigned int y_min, unsigned int y_max, const std::string &layer_id="boxes", double opacity=0.5) 
 // // 添加一填充矩形。  
bool  addFilledRectangle (unsigned int x_min, unsigned int x_max, unsigned int y_min, unsigned int y_max, double r, double g, double b, const std::string &layer_id="boxes", double opacity=0.5) 
//  // 添加一给定颜色的填充矩形。  
bool  addLine (unsigned int x_min, unsigned int y_min, unsigned int x_max, unsigned int y_max, double r, double g, double b, const std::string &layer_id="line", double opacity=1.0) 
//  添加一有颜色的直线,x_min,x_max,y_min,y_max为直线在窗口坐标系下的x与y的范围。  
bool  addLine (unsigned int x_min, unsigned int y_min, unsigned int x_max, unsigned int y_max, const std::string &layer_id="line", double opacity=1.0) 
//  添加一无颜色的直线,x_min,x_max,y_min,y_max为直线在窗口坐标系下的x与y的范围。    
bool  addText (unsigned int x, unsigned int y, const std::string &text, double r, double g, double b, const std::string &layer_id="line", double opacity=1.0) 
//  添加以有颜色的文本,x,y为文本在窗口坐标系下的位置。    
bool  addText (unsigned int x, unsigned int y, const std::string &text, const std::string &layer_id="line", double opacity=1.0) 
//  添加一无颜色的文本,x,y为文本在窗口坐标系下的位置
template<typename T >  
bool  addMask (const typename pcl::PointCloud< T >::ConstPtr &image, const pcl::PointCloud< T > &mask, double r, double g, double b, const std::string &layer_id="image_mask", double opacity=0.5) 
//  添加一mask, image包含原始需要显示的图像数据, mask保护需要绘制的mask数据。  
template<typename T >  
bool  addMask (const typename pcl::PointCloud< T >::ConstPtr &image, const pcl::PointCloud< T > &mask, const std::string &layer_id="image_mask", double opacity=0.5) 
//  添加一红色mask, image包含原始需要显示的图像数据, mask保护需要绘制的mask数据。  
template<typename T >  
bool  addPlanarPolygon (const typename pcl::PointCloud< T >::ConstPtr &image, const pcl::PlanarPolygon< T > &polygon, double r, double g, double b, const std::string &layer_id="planar_polygon", double opacity=1.0) 
//  Add a generic 2D planar polygon to an image. More...  
template<typename T >  
bool  addPlanarPolygon (const typename pcl::PointCloud< T >::ConstPtr &image, const pcl::PlanarPolygon< T > &polygon, const std::string &layer_id="planar_polygon", double opacity=1.0) 
//  Add a generic 2D planar polygon to an image. More...  
bool  addLayer (const std::string &layer_id, int width, int height, double opacity=0.5) 
//  添加一二维渲染层, width为宽度,height为高度。  
void  removeLayer (const std::string &layer_id) 
//  删除添加一二维渲染层。  
template<typename PointT >  
bool  showCorrespondences (const pcl::PointCloud< PointT > &source_img, const pcl::PointCloud< PointT > &target_img, const pcl::Correspondences &correspondences, int nth=1, const std::string &layer_id="correspondences") 
//  将指定的对应关系添加到显示中。

5.Class pcl::visualization::PCLVisualizerInteractorStyle

类PCLVisualizerInteractorStyle实现了基于VTK的交互方式自定义的点云可视化的交互方式。

其自定义的键盘有以下:

p,P:切换到点渲染模式。 w , W:如果支持网格渲染,则切换到网格渲染模式。 s,S:如果支持曲面渲染,则切换到曲面渲染模式。

j,J:存储当前一窗口截图为PNG文件。 c,C:显示当前窗口和摄像头参数。 f,F:飞向点模式。

e,E:推出交互。 q,Q:退出程序。+/一:增加或减小所有点大小。 g,G:显示或关闭尺度网格。 u,U:显示或关闭俯视图。

r,R[+ALT]:重置摄像头位置视角。 ALT+s,S:打开或关闭立体显示模式。

ALT+f,F:在最大化窗口与原始窗口大小之间切换。 SHIFT+left click:选择一点。

#include <pcl/visualization/interactor_style.h>
PCLVisualizerInteractorStyle () 
//  构造函数  
virtual  ~PCLVisualizerInteractorStyle () 
//  析构函数  
vtkTypeMacro (PCLVisualizerInteractorStyle, vtkInteractorStyleRubberBandPick) 
  
virtual void  Initialize () 
//  初始化该对象
void  setCloudActorMap (const CloudActorMapPtr &actors) 
//  设置指向 cloud actor map的指针。
void  setShapeActorMap (const ShapeActorMapPtr &actors) 
//  设置指向 shape actor map的指针。
CloudActorMapPtr  getCloudActorMap () 
//  获得指向 cloud actor map的指针。
ShapeActorMapPtr  getShapeActorMap () 
//  获得指向 shape actor map的指针。
void  setRendererCollection (vtkSmartPointer< vtkRendererCollection > &rens) 
//  设置渲染对象的集合。
void  setUseVbos (const bool use_vbos) 
//  使用顶点缓冲区对象渲染器。  
boost::signals2::connection  registerMouseCallback (boost::function< void(const pcl::visualization::MouseEvent &)> cb) 
//  注册回调函数,处理鼠标事件。
boost::signals2::connection  registerKeyboardCallback (boost::function< void(const pcl::visualization::KeyboardEvent &)> cb) 
//  注册回调函数,处理键盘事件。  
boost::signals2::connection  registerPointPickingCallback (boost::function< void(const pcl::visualization::PointPickingEvent &)> cb) 
//  注册回调函数,处理点拾取事件。
boost::signals2::connection  registerAreaPickingCallback (boost::function< void(const pcl::visualization::AreaPickingEvent &)> cb) 
//  注册回调函数,处理区域拾取事件。
void  saveScreenshot (const std::string &file) 
// 保存当前渲染的图片为PNG图片。
bool  saveCameraParameters (const std::string &file) 
//  保存当前摄像机参数。
void  getCameraParameters (Camera &camera) 
//  获取摄影机参数并将其保存到PCL::Visualization::Camera。
bool  loadCameraParameters (const std::string &file) 
//  从相机参数文件加载相机参数。更多。
void  setCameraParameters (const Eigen::Matrix3f &intrinsics, const Eigen::Matrix4f &extrinsics, int viewport=0) 
//  通过Intrinics and and Extrinsics矩阵设置相机参数。
void  setCameraParameters (const Camera &camera, int viewport=0) 
//  通过给定完整的摄像机数据结构来设置摄像机参数。
void  setCameraFile (const std::string file) 
//  设置保存/恢复相机参数的“相机文件”。  
std::string  getCameraFile () const 
//  获取保存/恢复摄像机参数的文件。更多。
void  setKeyboardModifier (const InteractorKeyboardModifier &modifier) 
//  将默认键盘从ALT修改为不同的特殊键。

6.Class pcl::visualization::PCLVisualizer

类PCLVisualizer为PCL可视化3D点云的主要类。其内部实现了添加各种3D对象以及交互实现等,比其他类实现的功能更齐全。

#include <pcl/visualization/pcl_visualizer.h>
PCLVisualizer (const std::string &name="", const bool create_interactor=true) 
//  PCL Visualizer类构造函数  
PCLVisualizer (int &argc, char **argv, const std::string &name="", PCLVisualizerInteractorStyle *style=PCLVisualizerInteractorStyle::New(), const bool create_interactor=true) 
//  PCL Visualizer 重构函数,其中name为创建窗口名, style为交互类实现﹐默认为PCLVisuali-zerInteractorStyle对象,create_interactor设置是否重建交互对象﹐默认是创建的。  
virtual  ~PCLVisualizer () 
//  PCL Visualizer 析构函数  
void  setFullScreen (bool mode) 
//  设置是否全屏显示,该函数有可能不能正常工作,取决于当前系统的窗口系统。
void  setWindowName (const std::string &name) 
//  设置窗口名字  
void  setWindowBorders (bool mode) 
//  设置是否有窗口边沿。
boost::signals2::connection  registerKeyboardCallback (boost::function< void(const pcl::visualization::KeyboardEvent &)> cb) 
//  注册键盘事件回调函数。
boost::signals2::connection  registerKeyboardCallback (void(*callback)(const pcl::visualization::KeyboardEvent &, void *), void *cookie=NULL) 
 // 功能同上,cookie传递用户参数。
template<typename T >  
boost::signals2::connection  registerKeyboardCallback (void(T::*callback)(const pcl::visualization::KeyboardEvent &, void *), T &instance, void *cookie=NULL) 
//  功能同上,callback为函数指针,instance为该函数定义的对象,cookie是用传递参数的指针。
boost::signals2::connection  registerMouseCallback (boost::function< void(const pcl::visualization::MouseEvent &)> cb) 
//  注册鼠标事件回调函数。
boost::signals2::connection  registerMouseCallback (void(*callback)(const pcl::visualization::MouseEvent &, void *), void *cookie=NULL) 
//  功能同上,cookie传递用户参数。
template<typename T >  
boost::signals2::connection  registerMouseCallback (void(T::*callback)(const pcl::visualization::MouseEvent &, void *), T &instance, void *cookie=NULL) 
//  注册鼠标事件回调函数, callback 为函数指针, instance为定义该函数的对象,cookie是用传递参数的指针。
boost::signals2::connection  registerPointPickingCallback (boost::function< void(const pcl::visualization::PointPickingEvent &)> cb) 
//  注册点拾取回调函数。
boost::signals2::connection  registerPointPickingCallback (void(*callback)(const pcl::visualization::PointPickingEvent &, void *), void *cookie=NULL) 
//  功能同上,cookie传递用户参数。
template<typename T >  
boost::signals2::connection  registerPointPickingCallback (void(T::*callback)(const pcl::visualization::PointPickingEvent &, void *), T &instance, void *cookie=NULL) 
//  注册点拾取回调函数, callback 为函数指针, instance为定义该函数的对象,cookie是用传递参数的指针。
boost::signals2::connection  registerAreaPickingCallback (boost::function< void(const pcl::visualization::AreaPickingEvent &)> cb) 
//  注册区域拾取回调函数。
boost::signals2::connection  registerAreaPickingCallback (void(*callback)(const pcl::visualization::AreaPickingEvent &, void *), void *cookie=NULL) 
//  功能同上,cookie传递用户参数。
template<typename T >  
boost::signals2::connection  registerAreaPickingCallback (void(T::*callback)(const pcl::visualization::AreaPickingEvent &, void *), T &instance, void *cookie=NULL) 
//  注册区域拾取回调函数, callback 为函数指针, instance为定义该函数的对象,cookie是用传递参数的指针。
void  spin () 
//  调用内部渲染函数,重新渲染输出。
void  spinOnce (int time=1, bool force_redraw=false) 
//  调用内部渲染函数一次,重新渲染输出时间最大不超过time,单位ms, force_re-draw设置是否强制重新绘制。
void  addOrientationMarkerWidgetAxes (vtkRenderWindowInteractor *interactor) 
//  添加显示方向的交互轴显示的小工具。
void  removeOrientationMarkerWidgetAxes () 
//  禁用方向标记小工具,以便将其从渲染器中移除。
void  addCoordinateSystem (double scale, int viewport) 
//  在坐标原点(0, 0,0)添加指示坐标轴, viewport为需要添加的视口﹐默认在所有视口中都添加, scale设置指示坐标轴的放大系数。
void  addCoordinateSystem (double scale=1.0, const std::string &id="reference", int viewport=0) 
//  在坐标(x, y,z)添加id坐标系坐标轴。 
void  addCoordinateSystem (double scale, float x, float y, float z, int viewport) 
//  在坐标(x, y,z)添加指示坐标轴, viewport为需要添加的视口﹐默认在所有视口中都添加, scale设置指示坐标轴的放大系数。
void  addCoordinateSystem (double scale, float x, float y, float z, const std::string &id="reference", int viewport=0) 
//  在坐标(x, y,z)添加id坐标系坐标轴。
void  addCoordinateSystem (double scale, const Eigen::Affine3f &t, int viewport) 
//  功能同上,但是经过t指定的变换得到。
void  addCoordinateSystem (double scale, const Eigen::Affine3f &t, const std::string &id="reference", int viewport=0) 
//  功能同上。
bool  removeCoordinateSystem (int viewport) 
//  删除前面添加的指示坐标轴。
bool  removeCoordinateSystem (const std::string &id="reference", int viewport=0) 
//  删除前面添加的id坐标轴。
bool  removePointCloud (const std::string &id="cloud", int viewport=0) 
//  在viewport指定的视口中删除指定id的点云。
bool  removePolygonMesh (const std::string &id="polygon", int viewport=0) 
//  在 viewport指定的视口中删除指定id的3多百姓网格。
bool  removeShape (const std::string &id="cloud", int viewport=0) 
//  在 viewport指定的视口中删除指定id的3D对象。
bool  removeText3D (const std::string &id="cloud", int viewport=0) 
//   在viewport指定的视口中删除指定id的3D字符串。
bool  removeAllPointClouds (int viewport=0) 
//  在viewport指定的视口中删除所有点云。
bool  removeAllShapes (int viewport=0) 
//  在viewport指定的视口中删除所有3D对象。
bool  removeAllCoordinateSystems (int viewport=0) 
//  在viewport指定的视口中删除所有3维轴。
void  setBackgroundColor (const double &r, const double &g, const double &b, int viewport=0) 
//  设置指定viewport视口的背景色。
bool  addText (const std::string &text, int xpos, int ypos, const std::string &id="", int viewport=0) 
//  在指定视口 viewport添加字符串text , id为添加字符串的ID标志,( xpos,ypos)为在视口的坐标。
bool  addText (const std::string &text, int xpos, int ypos, double r, double g, double b, const std::string &id="", int viewport=0) 
//  功能同上, r、g、b指定字符串颜色。
bool  addText (const std::string &text, int xpos, int ypos, int fontsize, double r, double g, double b, const std::string &id="", int viewport=0) 
//  功能同上, fontsize指定字符串大小,r、g、b指定字符串颜色。
bool  updateText (const std::string &text, int xpos, int ypos, const std::string &id="") 
//  将字符串更新到屏幕,参数同上。  
bool  updateText (const std::string &text, int xpos, int ypos, double r, double g, double b, const std::string &id="") 
//  将字符串更新到屏幕,参数同上。
bool  updateText (const std::string &text, int xpos, int ypos, int fontsize, double r, double g, double b, const std::string &id="") 
//  将字符串更新到屏幕,参数同上。
bool  updateShapePose (const std::string &id, const Eigen::Affine3f &pose) 
//  设置现有形状的位姿。
bool  updateCoordinateSystemPose (const std::string &id, const Eigen::Affine3f &pose) 
//  设置现有坐标系的位姿。
bool  updatePointCloudPose (const std::string &id, const Eigen::Affine3f &pose) 
//  设置现有形状的位姿。
template<typename PointT >  
bool  addText3D (const std::string &text, const PointT &position, double textScale=1.0, double r=1.0, double g=1.0, double b=1.0, const std::string &id="", int viewport=0) 
//  在3D空间添加3D字符串, text为字符串内容, position为添加字符串位置,textScale为字符缩放大小,r、g,b指定颜色, id指定字符串的ID标志。
bool  contains (const std::string &id) const 
//  检查具有给定ID的云、形状或坐标是否已添加到此vizualizer。
template<typename PointNT >  
bool  addPointCloudNormals (const typename pcl::PointCloud< PointNT >::ConstPtr &cloud, int level=100, float scale=0.02f, const std::string &id="cloud", int viewport=0) 
//  在指定的viewport中可视化带有法线和坐标的点云 cloud, level是显示法线是水平(默认为100),scale为显示法线的大小, id为点云的ID标志。
template<typename PointT , typename PointNT >  
bool  addPointCloudNormals (const typename pcl::PointCloud< PointT >::ConstPtr &cloud, const typename pcl::PointCloud< PointNT >::ConstPtr &normals, int level=100, float scale=0.02f, const std::string &id="cloud", int viewport=0) 
//  在指定的viewport中可视化带有法线和坐标的点云 cloud, normals包含输入点云数据集的法线数据,level是显示法线是水平(默认为100),scale为显示法线的大小, id为点云的ID标志。
template<typename PointNT >  
bool  addPointCloudPrincipalCurvatures (const typename pcl::PointCloud< PointNT >::ConstPtr &cloud, const typename pcl::PointCloud< pcl::PrincipalCurvatures >::ConstPtr &pcs, int level=100, float scale=1.0f, const std::string &id="cloud", int viewport=0) 
//  在指定的viewport中可视化点云的主曲率, cloud为点云坐标,pcs为主曲率, level是显示法线是水平(默认为100), scale 为显示主曲率的大小,id为点云的ID标志。
template<typename PointT , typename PointNT >  
bool  addPointCloudPrincipalCurvatures (const typename pcl::PointCloud< PointT >::ConstPtr &cloud, const typename pcl::PointCloud< PointNT >::ConstPtr &normals, const pcl::PointCloud< pcl::PrincipalCurvatures >::ConstPtr &pcs, int level=100, float scale=1.0f, const std::string &id="cloud", int viewport=0) 
//  在指定的viewport中可视化点云的主曲率, cloud为点云坐标, normals为点云法线,pcs为主曲率, level是显示法线是水平(默认为100), scale 为显示主曲率的大小,id为点云的ID标志。
template<typename PointT , typename GradientT >  
bool  addPointCloudIntensityGradients (const typename pcl::PointCloud< PointT >::ConstPtr &cloud, const typename pcl::PointCloud< GradientT >::ConstPtr &gradients, int level=100, double scale=1e-6, const std::string &id="cloud", int viewport=0) 
//  在指定的 viewport中可视化点云的强度梯度,cloud为点云坐标,gradients为点云强度梯度,level是显示强度梯度的水平默认为100 , scale为显示梯度的大小, id为点云的ID标志。
template<typename PointT >  
bool  addPointCloud (const typename pcl::PointCloud< PointT >::ConstPtr &cloud, const std::string &id="cloud", int viewport=0) 
//  在指定的 viewport内添加显示点云 cloud,id为点云的ID标志。
template<typename PointT >  
bool  updatePointCloud (const typename pcl::PointCloud< PointT >::ConstPtr &cloud, const std::string &id="cloud") 
//  刷新当前指定的id对应点云的数据以及显示。
template<typename PointT >  
bool  updatePointCloud (const typename pcl::PointCloud< PointT >::ConstPtr &cloud, const PointCloudGeometryHandler< PointT > &geometry_handler, const std::string &id="cloud") 
//  刷新当前指定的id对应点云的数据以及显示, geometry_handler为提取点的处理对象。
template<typename PointT >  
bool  updatePointCloud (const typename pcl::PointCloud< PointT >::ConstPtr &cloud, const PointCloudColorHandler< PointT > &color_handler, const std::string &id="cloud") 
//  刷新当前指定的id对应点云的数据以及显示,color_handler为提取颜色的处理对象。
template<typename PointT >  
bool  addPointCloud (const typename pcl::PointCloud< PointT >::ConstPtr &cloud, const PointCloudGeometryHandler< PointT > &geometry_handler, const std::string &id="cloud", int viewport=0) 
//  在指定的 viewport内添加点云 cloud, id为点云的ID标志,geometry_handler为提取点的处理对象。
template<typename PointT >  
bool  addPointCloud (const typename pcl::PointCloud< PointT >::ConstPtr &cloud, const GeometryHandlerConstPtr &geometry_handler, const std::string &id="cloud", int viewport=0) 
// 在指定的 viewport内添加点云 cloud, id为点云的ID标志, geometry_handler为提取点的处理对象指针。
template<typename PointT >  
bool  addPointCloud (const typename pcl::PointCloud< PointT >::ConstPtr &cloud, const PointCloudColorHandler< PointT > &color_handler, const std::string &id="cloud", int viewport=0) 
//  在指定的 viewport内添加点云 cloud, id为点云的ID标志, color_handler为提取颜色的处理对象。  
template<typename PointT >  
bool  addPointCloud (const typename pcl::PointCloud< PointT >::ConstPtr &cloud, const ColorHandlerConstPtr &color_handler, const std::string &id="cloud", int viewport=0) 
//  在指定的 viewport内添加点云 cloud, id为点云的ID标志, color_handler为提取颜色的处理对象指针。  
template<typename PointT >  
bool  addPointCloud (const typename pcl::PointCloud< PointT >::ConstPtr &cloud, const GeometryHandlerConstPtr &geometry_handler, const ColorHandlerConstPtr &color_handler, const std::string &id="cloud", int viewport=0) 
//  在指定的 viewport内添加点云 cloud, id为点云的ID标志, geometry_handler为提取点的处理对象指针, color_handler为提取颜色的处理对象指针。
bool  addPointCloud (const pcl::PCLPointCloud2::ConstPtr &cloud, const GeometryHandlerConstPtr &geometry_handler, const ColorHandlerConstPtr &color_handler, const Eigen::Vector4f &sensor_origin, const Eigen::Quaternion< float > &sensor_orientation, const std::string &id="cloud", int viewport=0) 
//  在指定的 viewport内添加点云 cloud, id为点云的ID标志, geometry_handler为提取点的处理对象指针, color_handler为提取颜色的处理对象指针,sensor_origin为全局坐标中的点云数据原点(默认为(0,0,0)),sensor_orientation为点云数据在全局坐标中的方向(默认为(1,0,0,0))。
bool  addPointCloud (const pcl::PCLPointCloud2::ConstPtr &cloud, const GeometryHandlerConstPtr &geometry_handler, const Eigen::Vector4f &sensor_origin, const Eigen::Quaternion< float > &sensor_orientation, const std::string &id="cloud", int viewport=0) 
//  在指定的 viewport内添加点云 cloud, id为点云的ID标志, geometry_handler为提取点的处理对象指针, csensor_origin为全局坐标中的点云数据原点(默认为(0,0,0)),sensor_orientation为点云数据在全局坐标中的方向(默认为(1,0,0,0))。
bool  addPointCloud (const pcl::PCLPointCloud2::ConstPtr &cloud, const ColorHandlerConstPtr &color_handler, const Eigen::Vector4f &sensor_origin, const Eigen::Quaternion< float > &sensor_orientation, const std::string &id="cloud", int viewport=0) 
//  在指定的 viewport内添加点云 cloud, id为点云的ID标志, color_handler为提取颜色的处理对象指针,sensor_origin为全局坐标中的点云数据原点(默认为(0,0,0)),sensor_orientation为点云数据在全局坐标中的方向(默认为(1,0,0,0))。
template<typename PointT >  
bool  addPointCloud (const typename pcl::PointCloud< PointT >::ConstPtr &cloud, const PointCloudColorHandler< PointT > &color_handler, const PointCloudGeometryHandler< PointT > &geometry_handler, const std::string &id="cloud", int viewport=0) 
//  在指定的 viewport内添加点云 cloud, id为点云的ID标志, geometry_handler为提取点的处理对象, color_handler为提取颜色的处理对象,sensor_origin为全局坐标中的点云数据原点(默认为(0,0,0)),sensor_orientation为点云数据在全局坐标中的方向(默认为(1,0,0,0))。
bool  addPointCloud (const pcl::PointCloud< pcl::PointXYZ >::ConstPtr &cloud, const std::string &id="cloud", int viewport=0) 
//  在指定的 viewport内添加点类型为PointXYZ的点云对象cloud, id为点云的ID标志。 
bool  addPointCloud (const pcl::PointCloud< pcl::PointXYZRGB >::ConstPtr &cloud, const std::string &id="cloud", int viewport=0) 
//  在指定的 viewport内添加点类型为PointXYZRGB的点云对象cloud, id 为点云的ID标志。
bool  addPointCloud (const pcl::PointCloud< pcl::PointXYZRGBA >::ConstPtr &cloud, const std::string &id="cloud", int viewport=0) 
//  在指定的 viewport内添加点类型为PointXYZRGBA的点云对象cloud, id 为点云的ID标志。
bool  addPointCloud (const pcl::PointCloud< pcl::PointXYZL >::ConstPtr &cloud, const std::string &id="cloud", int viewport=0) 
//  在指定的 viewport内添加点类型为PointXYZRGBL的点云对象cloud, id 为点云的ID标志。
bool  updatePointCloud (const pcl::PointCloud< pcl::PointXYZ >::ConstPtr &cloud, const std::string &id="cloud") 
bool  updatePointCloud (const pcl::PointCloud< pcl::PointXYZRGB >::ConstPtr &cloud, const std::string &id="cloud") 
bool  updatePointCloud (const pcl::PointCloud< pcl::PointXYZRGBA >::ConstPtr &cloud, const std::string &id="cloud") 
bool  updatePointCloud (const pcl::PointCloud< pcl::PointXYZL >::ConstPtr &cloud, const std::string &id="cloud") 
//  上面3个函数对应其3个add函数,分别实现对其对应点类型的点云数据更新以及显示刷新。
bool  addPolygonMesh (const pcl::PolygonMesh &polymesh, const std::string &id="polygon", int viewport=0) 
//  在指定的 viewport内添加多边形网格,polymesh为多边形网格。
template<typename PointT >  
bool  addPolygonMesh (const typename pcl::PointCloud< PointT >::ConstPtr &cloud, const std::vector< pcl::Vertices > &vertices, const std::string &id="polygon", int viewport=0) 
//  在指定的 viewport内添加多边形网格类型点云,cloud为点云,vertices为多边形顶点,id为多边形网格模型的ID标志。
template<typename PointT >  
bool  updatePolygonMesh (const typename pcl::PointCloud< PointT >::ConstPtr &cloud, const std::vector< pcl::Vertices > &vertices, const std::string &id="polygon") 
//  更新指定id的多边形网格数据以及显示,cloud为点云,vertices为多边形顶点。
bool  updatePolygonMesh (const pcl::PolygonMesh &polymesh, const std::string &id="polygon") 
//  更新指定id的多边形网格数据以及显示,polymesh为多边形网格。
bool  addPolylineFromPolygonMesh (const pcl::PolygonMesh &polymesh, const std::string &id="polyline", int viewport=0) 
//  在指定的 viewport内添加PolygoMesh对象中的Polygonline。
template<typename PointT >  
bool  addCorrespondences (const typename pcl::PointCloud< PointT >::ConstPtr &source_points, const typename pcl::PointCloud< PointT >::ConstPtr &target_points, const std::vector< int > &correspondences, const std::string &id="correspondences", int viewport=0) 
//  在指定的viewport内添加显示对应点关系, source_points为源点云数据, target_points为目标点云数据, correspondences每个元素为指向目标点云的索引,表示源点云与目标点云的对应关系。
bool  addTextureMesh (const pcl::TextureMesh &polymesh, const std::string &id="texture", int viewport=0) 
// 在指定的 viewport内添加PolygoMesh对象中的TextureMesh。 
template<typename PointT >  
bool  addCorrespondences (const typename pcl::PointCloud< PointT >::ConstPtr &source_points, const typename pcl::PointCloud< PointT >::ConstPtr &target_points, const pcl::Correspondences &correspondences, int nth, const std::string &id="correspondences", int viewport=0, bool overwrite=false) 
//  在指定的viewport内添加显示对应点关系, source_points为源点云数据, target_points为目标点云数据, correspondences每个元素为指向目标点云的索引,表示源点云与目标点云的对应关系,nth表示仅显示第N个对应关系,overwrite表示允许覆盖已存在的对应关系。
template<typename PointT >  
bool  addCorrespondences (const typename pcl::PointCloud< PointT >::ConstPtr &source_points, const typename pcl::PointCloud< PointT >::ConstPtr &target_points, const pcl::Correspondences &correspondences, const std::string &id="correspondences", int viewport=0) 
//  在指定的viewport内添加显示对应点关系, source_points为源点云数据, target_points为目标点云数据, correspondences每个元素为指向目标点云的索引,表示源点云与目标点云的对应关系。
template<typename PointT >  
bool  updateCorrespondences (const typename pcl::PointCloud< PointT >::ConstPtr &source_points, const typename pcl::PointCloud< PointT >::ConstPtr &target_points, const pcl::Correspondences &correspondences, int nth, const std::string &id="correspondences", int viewport=0) 
//  在指定的viewport内更新显示对应点关系, source_points为源点云数据, target_points为目标点云数据, correspondences每个元素为指向目标点云的索引,表示源点云与目标点云的对应关系,nth表示仅显示第N个对应关系。
template<typename PointT >  
bool  updateCorrespondences (const typename pcl::PointCloud< PointT >::ConstPtr &source_points, const typename pcl::PointCloud< PointT >::ConstPtr &target_points, const pcl::Correspondences &correspondences, const std::string &id="correspondences", int viewport=0) 
//  //  在指定的viewport内更新显示对应点关系, source_points为源点云数据, target_points为目标点云数据, correspondences每个元素为指向目标点云的索引,表示源点云与目标点云的对应关系。
void  removeCorrespondences (const std::string &id="correspondences", int viewport=0) 
//  在指定的viewport内删除对应点关系id的显示
int  getColorHandlerIndex (const std::string &id) 
//  获取id对应点云的颜色提取处理对象。
int  getGeometryHandlerIndex (const std::string &id) 
// 获取id对应点云的点坐标提取处理对象。
bool  updateColorHandlerIndex (const std::string &id, int index) 
//  设置或更改id对应点云的颜色提取处理对象为index对应的对象。
bool  setPointCloudRenderingProperties (int property, double val1, double val2, double val3, const std::string &id="cloud", int viewport=0) 
//  在指定的viewport内设置id点云的渲染属性property, vall 、 val2、val3为属性值。
bool  setPointCloudRenderingProperties (int property, double val1, double val2, const std::string &id="cloud", int viewport=0) 
//  在指定的viewport内设置id点云的渲染属性property, vall 、 val2为属性值。  
bool  setPointCloudRenderingProperties (int property, double value, const std::string &id="cloud", int viewport=0) 
//   在指定的viewport内设置id点云的渲染属性property,  value为属性值。
bool  getPointCloudRenderingProperties (int property, double &value, const std::string &id="cloud") 
//  获得id点云的渲染属性property,   
bool  setPointCloudSelected (const bool selected, const std::string &id="cloud") 
//  设置点云是否可以被选择。  
bool  setShapeRenderingProperties (int property, double value, const std::string &id, int viewport=0) 
//  S在指定的 viewport内设置id模型对象的渲染属性property,value为属性值。
bool  setShapeRenderingProperties (int property, double val1, double val2, double val3, const std::string &id, int viewport=0) 
//  在指定的 viewport内设置id模型对象的渲染属性property,vall 、 val2、val3为属性值。
bool  wasStopped () const 
//  检测窗口是否全部关闭。  
void  resetStoppedFlag () 
//  将STOPPED标志重新设置为FALSE。
void  close () 
//  关闭窗口。
void  createViewPort (double xmin, double ymin, double xmax, double ymax, int &viewport) 
//  在窗口中创建视口, xmin,ymin, xmax, ymax为视口左下角窗口坐标以及右上角窗口坐标,viewport 为视口标志。
void  createViewPortCamera (const int viewport) 
//  为给定视口创建新的单独摄影机。
template<typename PointT >  
bool  addPolygon (const typename pcl::PointCloud< PointT >::ConstPtr &cloud, double r, double g, double b, const std::string &id="polygon", int viewport=0) 
//  在指定视口 viewport 中添加多边形, cloud为点云数据, rgb 为颜色, id为对象ID。
template<typename PointT >  
bool  addPolygon (const typename pcl::PointCloud< PointT >::ConstPtr &cloud, const std::string &id="polygon", int viewport=0) 
 // 在指定视口 viewport中添加多边形,cloud 为点云数据, id为对象ID。
template<typename PointT >  
bool  addPolygon (const pcl::PlanarPolygon< PointT > &polygon, double r, double g, double b, const std::string &id="polygon", int viewport=0) 
//  在指定视口 viewport中添加多边形,polygon为多边形, rgb 为颜色, id为对象ID。  
template<typename P1 , typename P2 >  
bool  addLine (const P1 &pt1, const P2 &pt2, const std::string &id="line", int viewport=0) 
//  在指定视口 viewport中添加一条线段, pt1、 pt2为线段起始和终点, id为对象ID。  
template<typename P1 , typename P2 >  
bool  addLine (const P1 &pt1, const P2 &pt2, double r, double g, double b, const std::string &id="line", int viewport=0) 
// 在指定视口 viewport中添加一条线段,ptl ,pt2为线段起始和终点,rgb为颜色,id为对象ID。
template<typename P1 , typename P2 >  
bool  addArrow (const P1 &pt1, const P2 &pt2, double r, double g, double b, const std::string &id="arrow", int viewport=0) 
//  在指定视口 viewport中添加一条带距离显示的线段, pt1, pt2为线段起始和终点,rgb为颜色,id为对象ID。
template<typename P1 , typename P2 >  
bool  addArrow (const P1 &pt1, const P2 &pt2, double r, double g, double b, bool display_length, const std::string &id="arrow", int viewport=0) 
//  在指定视口 viewport中添加一条带距离显示的线段, pt1,pt2为线段起始和终点,rgb为颜色, 如果长度应以文本形式显示在箭头上,则display_length为True,id为对象ID。
template<typename P1 , typename P2 >  
bool  addArrow (const P1 &pt1, const P2 &pt2, double r_line, double g_line, double b_line, double r_text, double g_text, double b_text, const std::string &id="arrow", int viewport=0) 
//  在指定视口 viewport中添加一条带距离显示的线段, pt1,pt2为线段起始和终点,rgb为线和文本的颜色, 如果长度应以文本形式显示在箭头上,id为对象ID。
template<typename PointT >  
bool  addSphere (const PointT &center, double radius, const std::string &id="sphere", int viewport=0) 
//  在指定视口 viewport中添加一圆球体, center为中心, radius为半径, id为对象ID。
template<typename PointT >  
bool  addSphere (const PointT &center, double radius, double r, double g, double b, const std::string &id="sphere", int viewport=0) 
// 在指定视口 viewport中添加一圆球体, center为中心, radius为半径, rgb为颜色, id为对象ID。
template<typename PointT >  
bool  updateSphere (const PointT &center, double radius, double r, double g, double b, const std::string &id="sphere") 
//  在指定视口 viewport中更新显示一圆球体, center为中心, radius为半径, rgb为颜色, id为对象ID。  
bool  addModelFromPolyData (vtkSmartPointer< vtkPolyData > polydata, const std::string &id="PolyData", int viewport=0) 
//  在指定视口 viewport中添加一多边形数据, id为对象。
bool  addModelFromPolyData (vtkSmartPointer< vtkPolyData > polydata, vtkSmartPointer< vtkTransform > transform, const std::string &id="PolyData", int viewport=0) 
 // 在指定视口 viewport中添加一多边形数据, id为对象,并且使用transform进行变换。  
bool  addModelFromPLYFile (const std::string &filename, const std::string &id="PLYModel", int viewport=0) 
//  在指定视口 viewport中添加PLY的文件的模型, id为对象。
bool  addModelFromPLYFile (const std::string &filename, vtkSmartPointer< vtkTransform > transform, const std::string &id="PLYModel", int viewport=0) 
//  在指定视口 viewport中添加PLY的文件的模型, id为对象,并且使用transform进行变换。
bool  addCylinder (const pcl::ModelCoefficients &coefficients, const std::string &id="cylinder", int viewport=0) 
//  在指定视口 viewport中添加柱体模型, id为对象,coefficients为柱体模型参数。
bool  addSphere (const pcl::ModelCoefficients &coefficients, const std::string &id="sphere", int viewport=0) 
 // 在指定视口 viewport中添加圆球模型, id为对象, coefficients为圆球模型参数。
bool  addLine (const pcl::ModelCoefficients &coefficients, const std::string &id="line", int viewport=0) 
//  在指定视口 viewport中添加直线模型, id为对象,coefficients为直线模型参数。
bool  addPlane (const pcl::ModelCoefficients &coefficients, const std::string &id="plane", int viewport=0) 
//  在指定视口 viewport中添加平面模型, id为对象, coefficients为平面模型参数。
bool  addPlane (const pcl::ModelCoefficients &coefficients, double x, double y, double z, const std::string &id="plane", int viewport=0) 
//  在指定视口 viewport中添加平面模型, id为对象, coefficients为平面模型参数。  
bool  addCircle (const pcl::ModelCoefficients &coefficients, const std::string &id="circle", int viewport=0) 
//  在指定视口 viewport中添加圆环模型, id为对象, coefficients为圆环模型参数。
bool  addCone (const pcl::ModelCoefficients &coefficients, const std::string &id="cone", int viewport=0) 
//  在指定视口 viewport中添加圆锥模型, id为对象, coefficients为圆锥模型参数。
bool  addCube (const pcl::ModelCoefficients &coefficients, const std::string &id="cube", int viewport=0) 
//  在指定视口 viewport中添加立方体模型, id为对象,coefficients为立方体模型参数。
bool  addCube (const Eigen::Vector3f &translation, const Eigen::Quaternionf &rotation, double width, double height, double depth, const std::string &id="cube", int viewport=0) 
//  在指定视口 viewport中添加立方体模型, id为对象,其余均为立方体模型的参数。
bool  addCube (float x_min, float x_max, float y_min, float y_max, float z_min, float z_max, double r=1.0, double g=1.0, double b=1.0, const std::string &id="cube", int viewport=0) 
//  在指定视口 viewport中添加立方体模型, id为对象,其余均为立方体模型的参数。
void  setRepresentationToSurfaceForAllActors () 
//  改变所有模型的显示方式为面渲染方式。
void  setRepresentationToPointsForAllActors () 
//  改变所有模型的显示方式为点渲染方式。
void  setRepresentationToWireframeForAllActors () 
//   改变所有模型的显示方式为线框渲染方式。
void  setShowFPS (bool show_fps) 
//  设置是否显示显示窗口帧速率的2D文本。
void  renderView (int xres, int yres, pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud) 
//  返回在渲染视口中的点云在cloud。
void  renderViewTesselatedSphere (int xres, int yres, pcl::PointCloud< pcl::PointXYZ >::CloudVectorType &cloud, std::vector< Eigen::Matrix4f, Eigen::aligned_allocator< Eigen::Matrix4f > > &poses, std::vector< float > &enthropies, int tesselation_level, float view_angle=45, float radius_sphere=1, bool use_vertices=true) 
//  返回从不同的角度渲染添加到可视化工具中的CAD模型,以模拟模型的局部视图。
void  initCameraParameters () 
//  初始化摄像头参数。
bool  getCameraParameters (int argc, char **argv) 
//  获得摄像头参数。
bool  loadCameraParameters (const std::string &file) 
//  从相机参数文件加载相机参数。
bool  cameraParamsSet () const 
//  返回是否设置了摄像头参数。
bool  cameraFileLoaded () const 
//  检查是否自动加载了摄像机文件。更多.。
std::string  getCameraFile () const 
//  获取保存/恢复摄像机参数的文件。更多。
void  updateCamera () 
//  刷新摄像头参数并且重新渲染。
void  resetCamera () 
//  重新设置摄像头参数并且重新渲染。
void  resetCameraViewpoint (const std::string &id="cloud") 
//  将相机方向从{0,0,0}重置到给定数据集的center_{x,y,z}。
void  setCameraPosition (double pos_x, double pos_y, double pos_z, double view_x, double view_y, double view_z, double up_x, double up_y, double up_z, int viewport=0) 
//  在指定viewport 中,设置摄像头参数﹐位置( posX, posY , posZ),视向( viewX,view Y , viewZ),向上方向(upx,upY ,upZ)。
void  setCameraPosition (double pos_x, double pos_y, double pos_z, double up_x, double up_y, double up_z, int viewport=0) 
//  在指定viewport中设置摄像头参数,位置( posX, posY , posZ),视向( up_x,up_y,  up_z)。
void  setCameraParameters (const Eigen::Matrix3f &intrinsics, const Eigen::Matrix4f &extrinsics, int viewport=0) 
//  通过Intrinics and and Extrinsics矩阵设置相机参数。
void  setCameraParameters (const Camera &camera, int viewport=0) 
//  通过给定完整的摄像机数据结构来设置摄像机参数。
void  setCameraClipDistances (double near, double far, int viewport=0) 
//  设置相机剪辑距离。
void  setCameraFieldOfView (double fovy, int viewport=0) 
//  设置相机垂直视场。
void  getCameras (std::vector< Camera > &cameras) 
//  获取当前摄像机参数。
Eigen::Affine3f  getViewerPose (int viewport=0) 
//  获取摄像头位姿。  
void  saveScreenshot (const std::string &file) 
//  保存当前视图到PNG文件。
void  saveCameraParameters (const std::string &file) 
//  将相机参数以.cam文件的形式保存到磁盘。更多.。
void  getCameraParameters (Camera &camera) 
//  获取摄影机参数并将其保存到PCL::Visualization::Camera。
vtkSmartPointer< vtkRenderWindow >  getRenderWindow () 
//  返回指向使用的基础VTK渲染窗口的指针。
vtkSmartPointer< vtkRendererCollection >  getRendererCollection () 
//  返回指向基础VTK呈现器集合的指针。
CloudActorMapPtr  getCloudActorMap () 
//  返回指向此可视化工具使用的CloudActorMap的指针。
ShapeActorMapPtr  getShapeActorMap () 
//  返回指向此可视化工具使用的ShapeActorMap的指针。
void  setPosition (int x, int y) 
//  设置窗口在屏幕坐标系下的位置。
void  setSize (int xw, int yw) 
//  设置窗口在屏幕坐标系下的大小。
void  setUseVbos (bool use_vbos) 
//  使用顶点缓冲区对象渲染器。
void  setLookUpTableID (const std::string id) 
//  设置要用于LUT显示的云或形状的ID。
void  createInteractor () 
//  创建内部交互器对象。
void  setupInteractor (vtkRenderWindowInteractor *iren, vtkRenderWindow *win) 
//  为附加到给定vtkRenderWindow的给定vtkRenderWindowInteractive对象设置我们唯一的PCL交互器样式。  
void  setupInteractor (vtkRenderWindowInteractor *iren, vtkRenderWindow *win, vtkInteractorStyle *style) 
//  为附加到给定vtkRenderWindow的给定vtkRenderWindowInteractive对象设置PCLVisualizer,使其具有自定义交互程序样式。
vtkSmartPointer< PCLVisualizerInteractorStyle >  getInteractorStyle () 
//  获取指向当前使用的交互器样式的指针
template<typename PointNT >  
bool  addPointCloudPrincipalCurvatures (const typename pcl::PointCloud< PointNT >::ConstPtr &cloud, const pcl::PointCloud< pcl::PrincipalCurvatures >::ConstPtr &pcs, int level, float scale, const std::string &id, int viewport)   

7.Class pcl::visualization::PointCloudGeometryHandler

类PointCloudGeometryHandler实现了从给定点云中提取XYZ三个字段的值,并用于VTK中可视化。

8.Class pcl::visualization::PointCloudGeometryHandlerSurfaceNormal< PointT >

类PointCloudGeometryHandlerSurfaceNormal实现了从给定点云中提取XYZ对应法线三个字段的值,并用于VTK中可视化。

9.Class pcl::visualization::PointCloudGeometryHandlerCustom< PointT >

类PointCloudGeometryHandlerCustom实现了从给定点云中提取用户自定义字段的值,并用于VTK中可视化。

10.Class pcl::visualization::PointCloudColorHandler< PointT >

类PointCloudColorHandler实现从点云获取RGB的处理过程的基类。

11.Class pcl::visualization::PointCloudColorHandlerRandom< PointT >

类PointCloudColorHandlerRandom实现为点云生成随机颜色,并用于VTK中可视化。

12.Class pcl::visualization::PointCloudColorHandlerCustom< PointT >

类PointCloudColorHandlerCustom实现为点云定义颜色,并用于VTK中可视化。

13.Class pcl::visualization::PointCloudColorHandlerGenericField< PointT >

类PointCloudColorHandlerGenericField实现从点云的一个普通字段生成颜色,并用于VTK中可视化。

14.Class pcl::visualization::PointCloudColorHandlerRGBAField< PointT >

类PointCloudColorHandlerRGBAField实现从点云中RGB字段生成颜色,并用于VTK中可视化。

15.Class pcl::visualization::PointCloudColorHandlerHSVField< PointT >

类PointCloudColorHandlerHSVField实现从点云中HSv字段生成颜色,并用于VTK中可视化。

16.Class pcl::visualization::RangeImageVisualizer

类pcl::visualization::RangeImageVisualizer实现对深度图像的可视化。

#include <pcl/visualization/range_image_visualizer.h>
void  visualizeBorders (const pcl::RangeImage &range_image, float min_value, float max_value, bool grayscale, const pcl::PointCloud< pcl::BorderDescription > &border_descriptions) 
//  探测深度图像的边缘,遮挡物边缘用绿色显示,浅蓝色显示背景的边缘, border_descriptions边缘描述对象, range_image深度图像对象, min_value, max_value深度最大值与最小值。
void  showRangeImage (const pcl::RangeImage &range_image, float min_value=-std::numeric_limits< float >::infinity(), float max_value=std::numeric_limits< float >::infinity(), bool grayscale=false) 
//  可视化深度图像。 

17.Class pcl::RegistrationVisualizer< PointSource, PointTarget >

类RegistrationVisualizer实现可视化点云的配准过程,即显示配准中间的点云收敛过程位置轨迹。

#include <pcl/visualization/registration_visualizer.h>
RegistrationVisualizer () 
//  空构造函数  
bool  setRegistration (pcl::Registration< PointSource, PointTarget > &registration) 
//  设置需要显示收敛过程的配准算法。
void  startDisplay () 
//  开始显示。
void  stopDisplay () 
//  停止显示。
void  updateIntermediateCloud (const pcl::PointCloud< PointSource > &cloud_src, const std::vector< int > &indices_src, const pcl::PointCloud< PointTarget > &cloud_tgt, const std::vector< int > &indices_tgt) 
//  使用最新的配准中间结果更新可视化工具本地缓冲区cloud_mediate、cloud_mediate_index、cloud_target_index。
void  setMaximumDisplayedCorrespondences (const int maximum_displayed_correspondences) 
//  设置显示对应线的最大值。
size_t  getMaximumDisplayedCorrespondences () 
//  显示显示对应线的最大值。

18.pcl_visualization模块其他关键成员说明

#include <pcl/visualization/common/io.h>
PCL_EXPORTS void  pcl::visualization::getCorrespondingPointCloud (vtkPolyData *src, const pcl::PointCloud< pcl::PointXYZ > &tgt, std::vector< int > &indices) 
//  为VTK中 SRC获取点云TGT中的对应点,以索引形式存储在indices。
PCL_EXPORTS bool  pcl::visualization::savePointData (vtkPolyData *data, const std::string &out_file, const boost::shared_ptr< CloudActorMap > &actors) 
//  保存VTK格式的点云数据到out_file 中。

#include <pcl/visualization/common/actor_map.h>
PCL_EXPORTS vtkSmartPointer< vtkDataSet >  pcl::visualization::createLine (const Eigen::Vector4f &pt1, const Eigen::Vector4f &pt2) 
//  从两点创建线段,返回是VTK中对象。
PCL_EXPORTS vtkSmartPointer< vtkDataSet >  pcl::visualization::createSphere (const Eigen::Vector4f &center, double radius, int res=10) 
//  从圆心坐标与半径创建圆球,返回是VTK中对象。
PCL_EXPORTS vtkSmartPointer< vtkDataSet >  pcl::visualization::createCylinder (const pcl::ModelCoefficients &coefficients, int numsides=30) 
//  从coefficients模型系数创建柱体,返回是VTK中对象。
PCL_EXPORTS vtkSmartPointer< vtkDataSet >  pcl::visualization::createSphere (const pcl::ModelCoefficients &coefficients, int res=10) 
//  从coefficients模型系数创建球体,返回是VTK中对象。
PCL_EXPORTS vtkSmartPointer< vtkDataSet >  pcl::visualization::createLine (const pcl::ModelCoefficients &coefficients) 
//  从coefficients 模型系数创建直线,返回是VTK中对象。
PCL_EXPORTS vtkSmartPointer< vtkDataSet >  pcl::visualization::createPlane (const pcl::ModelCoefficients &coefficients) 
//  从coefficients模型系数创建平面,返回是VTK中对象。
PCL_EXPORTS vtkSmartPointer< vtkDataSet >  pcl::visualization::createPlane (const pcl::ModelCoefficients &coefficients, double x, double y, double z)
//  从coefficients模型系数创建平面,返回是VTK中对象,(x,y,z)为该点在平面上的投影,用于确定平面的中心。。
PCL_EXPORTS vtkSmartPointer< vtkDataSet >  pcl::visualization::create2DCircle (const pcl::ModelCoefficients &coefficients, double z=0.0) 
//  从coefficients模型系数创建圆环,返回是VTK中对象。
PCL_EXPORTS vtkSmartPointer< vtkDataSet >  pcl::visualization::createCone (const pcl::ModelCoefficients &coefficients) 
//  从coefficients模型系数创建圆锥体,返回是VTK中对象。
PCL_EXPORTS vtkSmartPointer< vtkDataSet >  pcl::visualization::createCube (const pcl::ModelCoefficients &coefficients) 
//  从coefficients模型系数创建立方体,返回是VTK中对象。
PCL_EXPORTS vtkSmartPointer< vtkDataSet >  pcl::visualization::createCube (const Eigen::Vector3f &translation, const Eigen::Quaternionf &rotation, double width, double height, double depth) 
//  创建立方体,返回是VTK中对象。
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值