1. 程式人生 > >點雲pcd格式轉換成ply格式

點雲pcd格式轉換成ply格式

轉載請註明出處:http://my.csdn.net/ye_shen_wei_mian

PCL中的常用的點雲端儲存檔案為.pcd檔案,但是很多場合下使用的點雲端儲存檔案為.ply檔案,特別是要在meshlab中檢視的時候。

PCL中有相應的類PLYWriter可以幫助我們實現從.pcd檔案到.ply檔案的轉換。值得一提的是,在PCL的原始碼pcl-master中的tools資料夾裡有很多範例的例程,可以幫助我們參照著實現很多簡單但基本的功能。其中,pcd2ply.cpp便是指導我們實現從.pcd檔案到.ply檔案的轉換的一個cpp檔案。

以下的小程式便是根據上述的指導檔案寫成的。值得注意的是,以下將用到的 PCLPointCloud2 類並不適用於PCL官網上的pcl-1.6.0版本,因為pcl-1.6.0實在是太老了,並沒有實現這個類。解決方法是使用較新的pcl-1.7.2版本,這樣就可以了。

#include <pcl/io/pcd_io.h>
#include <pcl/io/ply_io.h>
#include<pcl/PCLPointCloud2.h>
#include<iostream>
#include<string>

using namespace pcl;
using namespace pcl::io;
using namespace std;

int PCDtoPLYconvertor(string & input_filename ,string& output_filename)
{
pcl::PCLPointCloud2 cloud;
if (loadPCDFile(input_filename , cloud) < 0)
{
cout << "Error: cannot load the PCD file!!!"<< endl;
return -1;
}
PLYWriter writer;
writer.write(output_filename, cloud, Eigen::Vector4f::Zero(), Eigen::Quaternionf::Identity(),true,true);
return 0;

}

int main()
{
string input_filename = ".//source//cloud_pcd.pcd";
string output_filename = ".//result//cloud_ply.ply";
PCDtoPLYconvertor(input_filename , output_filename);
return 0;
}