J'essaie d'imprimer les coordonnées 3D du point sélectionné à l'aide de PCL. Ci-dessous le code:Imprimer les coordonnées 3D du point sélectionné dans le visualiseur PCL
#include <iostream>
#include <pcl/io/io.h>
#include <pcl/io/pcd_io.h>
#include <pcl/visualization/pcl_visualizer.h>
using namespace std;
void pointPickingEventOccurred (const pcl::visualization::PointPickingEvent& event, void* viewer_void)
{
std::cout << "[INOF] Point picking event occurred." << std::endl;
float x, y, z;
if (event.getPointIndex() == -1)
{
return;
}
event.getPoint(x, y, z);
std::cout << "[INOF] Point coordinate (" << x << ", " << y << ", " << z << ")" << std::endl;
}
int main (int argc, char** argv)
{
pcl::visualization::PCLVisualizer viewer("Cloud Viewer");
pcl::PointCloud<pcl::PointXYZRGBA>::Ptr body (new pcl::PointCloud<pcl::PointXYZRGBA>);
pcl::io::loadPCDFile ("body.pcd", *body);
viewer.addPointCloud (body,"body");
viewer.registerPointPickingCallback (pointPickingEventOccurred, (void*)&viewer);
viewer.spin();
return 0;
}
Le code se compile sans erreur mais n'imprime aucune information dans le termain. Quel est le problème ici?
Est-il possible que la fonction soit toujours laissée via le "retour" avant la sortie? – Yunnosch
@Yunnosch: Merci beaucoup. Je mets une instruction 'std :: cout' mais n'imprime rien sur le terminal. –
Voyez-vous la première ligne de sortie, et qu'est-ce que vous obtenez pour l'ID de point? Peut-être que c'est toujours comme ce que @Yunnosch veut dire. Pour ce faire: 'std :: cout <<" [INOF] Point de sélection événement s'est produit à l'id "<< event.getPointIndex() << std :: endl;' – acraig5075