此系列旨在记录学习过程,及代码案例。
此文操作平台:win7+pcl1.8.0+vs2015
PCL中通过注册回调函数registerPointPickingCallback来实现点云的三维坐标选取。
以下为代码main.cpp:
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_cloud.h>
#include <pcl/point_types.h>
#include <pcl/visualization/pcl_visualizer.h>
typedef pcl::PointXYZRGBA PointT;
typedef pcl::PointCloud<PointT> PointCloudT;
// Mutex: //进程锁
boost::mutex cloud_mutex;
//用于给回调函数的结构体定义
// structure used to pass arguments to the callback function
struct callback_args
{
PointCloudT::Ptr clicked_points_3d;
pcl::visualization::PCLVisualizer::Ptr viewerPtr;
};
//回调函数
void pp_callback(const pcl::visualization::PointPickingEvent& event, void* args)
{
struct callback_args* data = (struct callback_args *)args;
if (event.getPointIndex() == -1)
return;
PointT current_point;
event.getPoint(current_point.x, current_point.y, current_point.z);