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 ¢er, double radius, const std::string &id="sphere", int viewport=0)
// 在指定视口 viewport中添加一圆球体, center为中心, radius为半径, id为对象ID。
template<typename PointT >
bool addSphere (const PointT ¢er, 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 ¢er, 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 > ®istration)
// 设置需要显示收敛过程的配准算法。
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 ¢er, 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中对象。