1.pcdファイル--rabbit.pcd
リンク:https://pan.baidu.com/s/1v6mjPjwd7fIqUSjlIGTIGQ
抽出コード:zspx
新規プロジェクトPCL
同じディレクトリにrabbit.pcdとpcl.cpp
2.ファイルを読みます
(1)表示データ
#include <iostreamの> する#include <PCL / IO / pcd_io.h> の#include <PCL / point_types.h> int型のmain(int型 ARGC、チャー ** ARGV){ //ポインタと呼ばれるクラウドストレージXYZを作成します点群データのタイプ PCL PointCloud :: <PCL PointXYZ ::> :: Ptrがクラウド(新新 PCL PointCloud :: <PCL :: PointXYZ> ); // // *オープンファイル曇点IF(PCL :: IO :: loadPCDFile <PCL :: PointXYZ>(" rabbit.pcd "、*クラウド)== - 1。){ PCL_ERROR(" N- \ファイルrabbit.pcdを読み込むことができませんでした" ); リターン( - 1
); } のstd :: COUT << " ロードされ:" << cloud->幅* cloud->高<< " 以下のフィールドを持つtest_pcd.pcdからデータ点:" << はstd :: ENDL。 用は(size_t i = 0 ; I <cloud-> points.size(); ++ I){ のstd :: COUT << " " << cloud->点[i]は.X << " " << cloud- >点[i]は.Y << " " << cloud->点[i]は.Z << " " << はstd :: ENDL。リターン 0 ; }
アウトショー上のファイルデータ
説明:
PointCloudは、PCL、PCLにおける基本クラスである:: PointCloud <PCL :: PointXYZ> :: ptrが共有ポインタブーストあります
データフィールドPointCloud
点群データ構造がある場合、線は点クラウドのデータポイントを表す設定し、幅(INT)、解体した場合には、構造化されていない点群データは、点群の数を示します。
構造化されていない点群データであれば高さ(INT)、高さ= 1は、点群データ構造がある場合、高さポイントクラウドは、行の合計数を表します。
点は(スタンダード::ベクトル)データのダイナミックアレイPointT型として格納されています。
PointXYZ点は、それが唯一の三次元X、Y、Z座標情報を含んでいる、最も一般的なデータ・タイプであります
X:ポイント[i]は.X
size_tの整数であり、格納された整数、レコードサイズ(大きさ)
points.size()点群データのサイズを表します
(2)データの可視化
#include <iostreamの> する#include <PCL / IO / pcd_io.h> の#include <PCL / point_types.h> の#include <PCL /可視/ cloud_viewer.h> int型のmain(int型 ARGC、チャー ** ARGV){ PCL: :PointCloud <PCL :: PointXYZ> :: Ptrがクラウド(新しい PCL :: PointCloud <PCL :: PointXYZ> ); // // *打开点云文件場合(PCL :: IO :: loadPCDFile <PCL :: PointXYZ>(" rabbit.pcd "、*クラウド)== - 1 ){ PCL_ERROR(「ファイルウサギを読み取れませんでした。 PCD \ N " ); ( - 1 )。 } のstd :: COUT << cloud-> points.size()<< はstd :: ENDL。 PCL ::可視化:: CloudViewerビューア(" クラウド・ビューア" )。 viewer.showCloud(雲)。 一方、(!viewer.wasStopped()){ } システム(" 一時停止" )。 リターン 0 ; }
業績
ホイールで右折
背景色を変更します。
#include<iostream> #include<pcl/io/pcd_io.h> #include<pcl/point_types.h> #include <pcl/visualization/cloud_viewer.h> void viewerOneOff(pcl::visualization::PCLVisualizer& viewer) { viewer.setBackgroundColor(1.0f, 0.5f, 1.0f); } int main(int argc, char** argv) { pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>); //*打开点云文件 if (pcl::io::loadPCDFile<pcl::PointXYZ>("rabbit.pcd", *cloud) == -1) { PCL_ERROR("Couldn't read file rabbit.pcd\n"); return(-1); } std::cout << cloud->points.size() << std::endl; pcl::visualization::CloudViewer viewer("cloud viewer"); viewer.showCloud(cloud); viewer.runOnVisualizationThreadOnce(viewerOneOff); system("pause"); return 0; }
输出文字
#include<iostream> #include<pcl/io/pcd_io.h> #include<pcl/point_types.h> #include <pcl/visualization/cloud_viewer.h> int user_data; void viewerOneOff(pcl::visualization::PCLVisualizer& viewer) { viewer.setBackgroundColor(1.0f, 0.5f, 1.0f); } void viewerPsycho(pcl::visualization::PCLVisualizer& viewer) { static unsigned count = 0; std::stringstream ss; ss << "Once per viewer loop: " << count++; viewer.removeShape("text", 0); viewer.addText(ss.str(), 20, 100, "text", 0);//this is to set the coordination of text "Once per viewer loop:" user_data++; } int main(int argc, char** argv) { pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>); //*打开点云文件 if (pcl::io::loadPCDFile<pcl::PointXYZ>("rabbit.pcd", *cloud) == -1) { PCL_ERROR("Couldn't read file rabbit.pcd\n"); return(-1); } std::cout << cloud->points.size() << std::endl; pcl::visualization::CloudViewer viewer("cloud viewer"); viewer.showCloud(cloud); viewer.runOnVisualizationThreadOnce(viewerOneOff); viewer.runOnVisualizationThread(viewerPsycho); system("pause"); return 0; }