PCL1.8.1 basada en la biblioteca de nubes de puntos
1.1 incluye archivos de encabezado.
#includes
#includes
#includes
#includes
Usar espacio de nombres pcl
typedef PCL::punto XYZ PointT;
typedef PCL::nube de puntos nube de puntos t;
//mutex://bloqueo de proceso
boost::mutex cloud _ mutex
//Estructura utilizada para definir funciones de devolución de llamada.
Estructura callback_parameter
{
nube de puntos::Ptr hizo clic en _ puntos _ 3d
PCL::visualización:: PCLVisualizer: :Ptr Viewer Ptr;
};
//Función de devolución de llamada
//Mantenga presionada la tecla Mayús, haga clic derecho en la nube de puntos y la distancia del punto será Muéstralo.
void PP_callback(const PCL::visualization::PointPickingEvent & event, void * args)
{
struct callback_args * data = (struct callback_ args * )args;
Si (event.getPointIndex() == -1)
Retorno;
PuntoT punto actual;
Evento . getPoint(current_point.x, current_point.y, current_point.z);
//TODO
data->clicked_points_3d->clear( ); punto.
Datos->clicked_points_3d->points.push_back(current point);//Agregar puntos recién seleccionados
//Dibujar los puntos en los que se hizo clic en rojo Punto: marcar el punto seleccionado en rojo.
PCL::visualización::PointCloudColorHandlerCustom red(data->clicked_points_3d,255,0,0);
datos->viewer ptr->removePointCloud( " clicked_points" );
datos->viewer ptr->addPointCloud(data->clicked_points_3d, rojo, "clicked_points");
datos->viewer ptr->setPointCloudRenderingProperties (PCL::visualización::PCL_VISUALIZER_POINT_SIZE, 10, "clicked_points");
Estándar::cout