前提・実現したいこと
PCLライブラリを使って、ポイントクラウドのデータ(x,y座標、.pcdフォーマット)を読み込みたいです。
チュートリアルに従って、サンプルのデータを読み込ませることはできたのですが、自分のデータを読み込むと、x,y座標の値が変化して読み込まれてしまいます。
発生している問題・エラーメッセージ
実際の値は下記pcdファイルにあるように3603538.71629などなのですが、pclで読み込むと違った値になってしまいます。
該当のソースコード xyzc-Cloud.pcd, pcd_read.cpp
pcd
1# .PCD v.7 - Point Cloud Data file format 2VERSION .7 3FIELDS x y z cluster 4SIZE 4 4 4 4 5TYPE F F F F 6COUNT 1 1 1 1 7WIDTH 14937 8HEIGHT 1 9VIEWPOINT 0 0 0 1 0 0 0 10POINTS 14937 11DATA binary 12 13# POINT_X;POINT_Y;Count;Cluster 143603538.71629;5794698.05946;1;4 153605159.73611;5792213.47052;1;20 163605158.44424;5792230.86339;1;20 173605158.97718;5792221.85844;1;20 183605152.30217;5792232.17992;1;20 193604558.82308;5793345.02318;1;55 203604944.90684;5794341.30959;1;56 213603573.24699;5792898.45793;1;90 223603224.56671;5794569.82724;1;95 233603255.55387;5794586.19727;1;95 243604169.99855;5794061.00899;1;98 253604165.55459;5794065.67417;1;98
c++
1#include <iostream> 2#include <pcl/io/pcd_io.h> 3#include <pcl/point_types.h> 4 5int 6main (int argc, char** argv) 7{ 8 pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>); 9 10 if (pcl::io::loadPCDFile<pcl::PointXYZ> ("xyzc-Cloud.pcd", *cloud) == -1) //* load the file 11 { 12 PCL_ERROR ("Couldn't read file xyzc-Cloud.pcd \n"); 13 return (-1); 14 } 15 std::cout << "Loaded " 16 << cloud->width * cloud->height 17 << " data points from xyzc-Cloud.pcd with the following fields: " 18 << std::endl; 19 20 for (size_t i = 0; i < 10; ++i) 21 std::cout << " " << cloud->points[i].x 22 << " " << cloud->points[i].y 23 << " " << cloud->points[i].z << std::endl; 24 25 return (0); 26}
試したこと
該当のファイルをcloudcompareで可視化したら、想定通りのpoint cloudの形は確認することができました。そのため、point cloudのデータ自体は正しく保存できていると思います。
環境
macOS ver 10.14.16
足りない情報があれば追記します。よろしくお願いします。
あなたの回答
tips
プレビュー