2014-11-02 4 views
2

Как проверить определенные координаты точки в PCLVisualizer? Там нет информации по этой теме в помощи:Координаты точки отсчета в PCLVisualizer

| Help: 
------- 
      p, P : switch to a point-based representation 
      w, W : switch to a wireframe-based representation (where available) 
      s, S : switch to a surface-based representation (where available) 

      j, J : take a .PNG snapshot of the current window view 
      c, C : display current camera/window parameters 
      f, F : fly to point mode 

      e, E : exit the interactor 
      q, Q : stop and call VTK's TerminateApp 

      +/- : increment/decrement overall point size 
    +/- [+ ALT] : zoom in/out 

      g, G : display scale grid (on/off) 
      u, U : display lookup table (on/off) 

    r, R [+ ALT] : reset camera [to viewpoint = {0, 0, 0} -> center_{x, y, z}] 

    ALT + s, S : turn stereo mode on/off 
    ALT + f, F : switch between maximized window mode and original size 

      l, L   : list all available geometric and color handlers for the current actor map 
    ALT + 0..9 [+ CTRL] : switch between different geometric handlers (where available) 
      0..9 [+ CTRL] : switch between different color handlers (where available) 

    SHIFT + left click : select a point 

      x, X : toggle rubber band selection mode for left mouse button 

Содержит ли camera/window parameters такой информации? Когда я нажимаю c я получаю следующий вывод:

0.104105,104.105/-2.05844,1.35894,132.23/-0.65883,-6.36161,134.911/0.252413,0.357973,0.898968/0.523599/640,512/0,52 
+2

точки собирание обратного вызова: HTTP: // документы. pointclouds.org/1.2.0/classpcl_1_1visualization_1_1_p_c_l_visualizer.html#ae8d38a6277cbab766b4e4c5e9c9b4e66 –

ответ

2

Вы должны захватить событие точку сбора.

Сначала нужно создать точку обратного вызова: комплектования

void pp_callback(const pcl::visualization::PointPickingEvent& event, void* viewer_void) 
{ 
    std::cout << "Picking event active" << std::endl; 
    if(event.getPointIndex()!=-1) 
    { 
     float x,y,z; 
     event.getPoint(x,y,z); 
     std::cout << x<< ";" << y<<";" << z << std::endl; 
    } 
} 

, а затем, в вашем коде, скажите PCLvisualizer использовать его:

pcl::visualization::PCLVisualizer visualizer("PCL visualizer"); 
[...] 
visualizer.registerPointPickingCallback(pp_callback, (void*)&visualizer); 
[...] 
visualizer.spin();