2015-11-06 51 views
0

我正嘗試在PCL 1.7中使用雙邊過濾器(不是快速雙邊過濾器),因爲我有無序的點雲。我已經能夠使其他PCL代碼片段工作(所以它不是轉換代碼),並且我找不到有關如何使此特定過濾器工作的文檔。我想下面的代碼,但調用applyFilter當我得到一個內存訪問衝突:與PCL一起使用雙邊過濾器

pcl::PointCloud<pcl::PointXYZI>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZI>()); 
    // convert from custom format to pcl format 
    convert(world_pts, left_intensities, cloud); 

    pcl::search::KdTree<pcl::PointXYZI>::Ptr tree (new pcl::search::KdTree<pcl::PointXYZI>); 

    pcl::PointCloud<pcl::PointXYZI> cloud_filtered; 

    pcl::BilateralFilter<pcl::PointXYZI> fbFilter; 
    fbFilter.setInputCloud(cloud); 
    fbFilter.setHalfSize(1.0); 
    fbFilter.setStdDev(0.2); 
    fbFilter.applyFilter(cloud_filtered); 

回答

1

功能:

void pcl::BilateralFilter<PointT>::applyFilter (PointCloud & output) 

預計到輸出點雲 參考,這就是爲什麼你會得到內存訪問衝突

使用:

fbFilter.applyFilter(*cloud_filtered); 

);

+0

其實你應該使用filter()而不是applyFilter()。有一些額外的設置需要發生。我想知道如果applyFilter應該是一個受保護的函數,所以它不是很混亂? –

相關問題