1. 程式人生 > 其它 >ROS 學習踩坑筆記9-PCD檔案自動去除NAN點

ROS 學習踩坑筆記9-PCD檔案自動去除NAN點

技術標籤:ROS踩坑及解決方法記錄ROS學習歷程

原部落格連結為:

https://www.cnblogs.com/li-yao7758258/p/6519830.html

存在問題:編譯過後,發現輸入命令列無法執行刪除nan點的功能.

解決方法:命令列指令為 : 需要輸入輸入點雲名稱+輸出點雲檔名稱!!

例如: /02-PCD_rm_nan input_cloud.pcd output_cloud.pcd

具體程式碼為:

#include <pcl/io/pcd_io.h>
#include <pcl/filters/filter.h>
#include <iostream>
#include <pcl/visualization/cloud_viewer.h>

int main(int argc,char** argv)
{
if(argc !=3)
 {
  std::cout <<"\tUsage: "<<argv[0] <<"<input cloud> <output cloud>" <<std::endl;

  return  -1;
 }

//object for string the point cloud
pcl::PointCloud<pcl::PointXYZRGBA>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZRGBA>);
//read a PCDfile from disk
if(pcl::io::loadPCDFile<pcl::PointXYZRGBA>(argv[1],*cloud) !=0)
{
 return -1;
}

//the mapping tells you to that points of the oldcloud the new ones correspond
//but we  will not use it
std::vector<int> mapping;
pcl::removeNaNFromPointCloud(*cloud, *cloud, mapping);
//pcl::removeNaNFromPointCloud(*cloud, *cloud, mapping);
//save it back
pcl::io::savePCDFileASCII(argv[2],*cloud);

pcl::visualization::CloudViewer viewer(argv[2]);
         viewer.showCloud(cloud);
        while (!viewer.wasStopped())
    {
        // Do nothing but wait.
    }

}