Skip to content
Harumo Sasatake edited this page Oct 25, 2018 · 2 revisions

点群の書き込み・読み込み

点群をファイルから書き込んだり,読み込んだりを行える関数を説明するよ

読み込み,書き込みできるファイルの拡張子は下記の通り

拡張子 説明
pcd pcl公式のファイル
ply 3DCGとかで使用されるファイル
obj 3DCGとかで使用されるファイル

PCD ファイル

読み込み

pcl::io::loadPCDFile(std::string file_name, pcl::PointCloud<pcl::PointXYZ>)
//ポインタ版
pcl::io::loadPCDFile(std::string file_name, *pcl::PointCloud<pcl::PointXYZ>::Ptr)

ファイルからの読み込みに失敗するとこの関数は-1を返すので下記の感じで使いましょう

if (pcl::io::loadPCDFile(std::string file_name, pcl::PointCloud<pcl::PointXYZ>) < 0) {
    std::cout << "Error! can not load the file! << std::endl;
}

書き込み

pcl::io::savePCDFileASCII(std::string file_name, pcl::PointCloud<pcl::PointXYZ>)
//ポインタ版
pcl::io::savePCDFileASCII(std::string file_name, *pcl::PointCloud<pcl::PointXYZ>::Ptr)

PLY ファイル

読み込み

pcl::io::loadPLYFile(std::string file_name, pcl::PointCloud<pcl::PointXYZ>)
//ポインタ版
pcl::io::loadPLYFile(std::string file_name, *pcl::PointCloud<pcl::PointXYZ>::Ptr)

ファイルからの読み込みに失敗するとこの関数は-1を返すので下記の感じで使いましょう

if (pcl::io::loadPLYFile(std::string file_name, pcl::PointCloud<pcl::PointXYZ>) < 0) {
    std::cout << "Error! can not load the file! << std::endl;
}

書き込み

pcl::io::savePLYFileASCII(std::string file_name, pcl::PointCloud<pcl::PointXYZ>)
//ポインタ版
pcl::io::savePLYFileASCII(std::string file_name, *pcl::PointCloud<pcl::PointXYZ>::Ptr)

OBJ ファイル

読み込み

pcl::io::loadOBJFile(std::string file_name, pcl::PointCloud<pcl::PointXYZ>)
//ポインタ版
pcl::io::loadOBJFile(std::string file_name, *pcl::PointCloud<pcl::PointXYZ>::Ptr)

ファイルからの読み込みに失敗するとこの関数は-1を返すので下記の感じで使いましょう

if (pcl::io::loadOBJFile(std::string file_name, pcl::PointCloud<pcl::PointXYZ>) < 0) {
    std::cout << "Error! can not load the file! << std::endl;
}

書き込み

pcl::io::saveOBJFileASCII(std::string file_name, pcl::PointCloud<pcl::PointXYZ>)
//ポインタ版
pcl::io::saveOBJFileASCII(std::string file_name, *pcl::PointCloud<pcl::PointXYZ>::Ptr)

速度

実は,pclの保存関数は以下の3通りがある.

  1. pcl::io::savePCDFileASCII 全部テキスト形式で保存.テキストエディタで見れる.
  2. pcl::io::savePCDFileBinary ヘッダ部分はテキスト形式で,データ部分はバイナリ形式で保存
  3. pcl::io::savePCDFileBainaryCompressed ヘッダ部分はテキスト形式で,データ部分はLZF形式で保存

どの形式で保存しても,pcl::io::loadPCDFile関数で読み込み可能. Binary形式 で保存すると書き込が143倍早く,読み込みが250倍早くなり,ファイルサイズは1/3になるなしい. 詳しくはこのブログを参照してください.

Clone this wiki locally