pointcloud library(PCL)是目前发展势头最猛的三维点云处理库,并且在许多领域都扮演者重要的角色。为了能让大家更好的了解和使用pcl库,我们现在正在着手名为PCLlab的项目,目标是集成pcl中的算法实现类似meshlab功能的软件。对于pcl的操作,我们需要借助MFC,QT之类的平台来实现界面操作。目前我们主要以MFC平台来集成各个算法。
所以第一个问题就是最基本的显示功能:如何将pcl中产生的分离窗口与MFC窗口结合。
要实现该功能需要以下几个关键设置:不需要重新继承其他类,只需要做一些简单设置即可实现
(1)实例化的初始设置
pcl::visualization::PCLVisualizer m_viewer("PCL",false);
注意:初始化时必须设置成false,否则窗口始终是分离。如果要在类中实例化,由于这种实例化方式不允许,所以可以在pcl_visualizer.h中将构造函数的默认值改为false。
(2)设置显示窗口的父窗口
m_win =m_viewer.getRenderWindow();
m_win->SetParentId(this->m_hWnd);
(3)添加点云前要删除所有点云,否则无法显示。如果只是一次性载入的话,可以省略这步。
m_viewer.removeAllPointClouds();
核心程序
PCLlabView.h
视图类头文件
#include <iostream>
#include "pcd_io.h"
// PCL
#include <pcl/console/parse.h>