2014-11-09 3 views
0

Я хочу отображать облако точек, фильтрованное в реальном времени, я имею в виду не из файлов PCD, я пытался манипулировать примером кода из документации PCL, я новичок в этот материал и начинающий C++. Вот мой код, он имеет ошибки, но я не могу понять. :(Фильтровать облако точек в реальном времени ... PCL

#include <pcl/io/openni_grabber.h> 
#include <pcl/visualization/cloud_viewer.h> 
#include <iostream> 
#include <pcl/point_types.h> 
#include <pcl/filters/voxel_grid.h> 
Class SimpleOpenNIViewer 
{ 
public: 
SimpleOpenNIViewer() : viewer ("PCL OpenNI Viewer") {} 
pcl::PointCloud<pcl::PointXYZ>::Ptr &cloud_filtered; 
void cloud_cb_ (const pcl::PointCloud<pcl::PointXYZ>::ConstPtr &cloud) 
{ 
    if (!viewer.wasStopped()){ 
    pcl::VoxelGrid<pcl::PointCloud<pcl::PointXYZ> sor; 
    sor.setInputCloud (cloud); 
    sor.setLeafSize (0.01f, 0.01f, 0.01f); 
    sor.filter (*cloud_filtered); 
    viewer.showCloud (cloud_filtered); 
    } 
} 

void run() 
{ 
    pcl::Grabber* interface = new pcl::OpenNIGrabber(); 

    boost::function<void (const pcl::PointCloud<pcl::PointXYZ>::ConstPtr&)> f = 
    boost::bind (&SimpleOpenNIViewer::cloud_cb_, this, _1); 

    interface->registerCallback (f); 

    interface->start(); 

    while (!viewer.wasStopped()) 
    { 
    boost::this_thread::sleep (boost::posix_time::seconds (1)); 
    } 

    interface->stop(); 
} 

pcl::visualization::CloudViewer viewer; 
}; 

int main() 
{ 
    SimpleOpenNIViewer v; 
    v.run(); 
    return 0; 
} 
+0

Это помогло бы потенциальным Помощники с много, если вы могли бы предоставить сообщения об ошибках. –

ответ

0

Ошибка:

sor.setInputCloud (cloud); 
sor.setLeafSize (0.01f, 0.01f, 0.01f); 
sor.filter (*cloud_filtered); 
viewer.showCloud (*cloud_filtered);// I guess with this the error is solved 
Смежные вопросы