ROS 學習踩坑筆記9-PCD檔案自動去除NAN點
阿新 • • 發佈:2021-01-20
技術標籤:ROS踩坑及解決方法記錄ROS學習歷程
原部落格連結為:
存在問題:編譯過後,發現輸入命令列無法執行刪除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. } }