2017-08-21 1 views
1

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?

+0

Est-il possible que la fonction soit toujours laissée via le "retour" avant la sortie? – Yunnosch

+0

@Yunnosch: Merci beaucoup. Je mets une instruction 'std :: cout' mais n'imprime rien sur le terminal. –

+0

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

Répondre

2

Essayez de maintenir la touche Maj enfoncée tout en effectuant un clic gauche pour sélectionner un point.

+0

Ceci est une chose vraiment stupide à demander .. Il fonctionne ... Je n'ai jamais su à ce sujet que la touche Maj est nécessaire. –

+1

Pas stupide du tout, vous n'êtes pas le premier à avoir ce problème! – shouston