PCLは、データPCDファイルを読み込みます

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;
}

 

おすすめ

転載: www.cnblogs.com/baby123/p/10950907.html