日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux怎么查看.pcd文件,PCD文件格式详解及在PCL下读取PCD文件

發布時間:2023/12/16 linux 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux怎么查看.pcd文件,PCD文件格式详解及在PCL下读取PCD文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、PCD簡介

1.1 PCD版本

在點云庫PCL 1.0發布之前,PCD文件格式就已經發展更新了許多版本。這些新舊不同的版本用PCD_Vx來編號(例如PCD_V5、PCD_V6和PCD_V7等),分別代表PCD文件的0.5版、0.6版和0.7版。在PCL中,用到的PCD文件格式的正式發布是0.7版,即PCD_V7。

1.2 頭文件格式

PCD文由?“頭文件 + 點云數據”構成,頭文件聲明了該點云數據集的基本特性。下面以PCD_V7版本的PCD文件為例,對頭文件進行介紹。打開經典的兔子模型(用記事本就能打開),頭文件及部分點云數據如下所示:

# .PCD v0.7 - Point Cloud Data file format

VERSION 0.7

FIELDS x y z

SIZE 4 4 4

TYPE F F F

COUNT 1 1 1

WIDTH 35947

HEIGHT 1

VIEWPOINT 0 0 0 1 0 0 0

POINTS 35947

DATA ascii

-1.10698 3.272394 -0.447241

-1.80195 3.367094 -0.704211

-4.12496 5.602794 2.824819

1.2.1 VERSION

指定PCD文件的版本,由0.7可知該點云數據集是0.7版本的。

VERSION 0.7 //PCD版本號為0.7版

1.2.2 FIELDS

指定本點云數據集中任意一個點可以有的維度信息和其他附加信息。如:FIELDS x y z? 指每個點都有xyz三個維度信息,FIELDS x y z rgb 指每個點除了xyz維度信息外還有顏色信息等。

FIELDS x y z //該數據集中包含每一個點的xyz緯度信息

1.2.3 SIZE

儲存每個維度信息占用的字節數(byte)。1指用char型數據存儲維度信息,2指用short型數據存儲維度信息,4指用int或float型數據存儲維度信息,8指用double型數據存儲維度信息。

SIZE 4 4 4 //x y z每個維度均占用4個字節

1.2.4 TYPE

用字符指定每一個維度的數據類型。I表示有符號類型:int8(char),int16(short),int32(int);U表示無符號類型:uint8(unsigned char),uint 16(unsigned short),uint32(unsigned int);F表示浮點型float和double。

TYPE F F F //x y z每個維度的均為4字節的浮點型,即為float

1.2.5 COUNT

每個維度包含的元素個數。

COUNT 1 1 1 //x y z每個維度均包含1個元素

1.2.6 WIDTH

點云數據集可分為有序數據集和無序數據集兩種。有序數據集類似矩陣,有行列之分,無序數據集則無行列之分。根據數據集是否有序,WIDTH由不同的含義。

對有序數據集而言:表示數據集的寬度(每行點的數目);

對于無序數據集而言:表示數據集中點的總數(和下面的POINTS一樣)。

1.2.7 HEIGHT

對有序數據集而言:表示數據集的高度(行數);

對于無序數據集而言:被設置為1,用于聲明一個數據集是否有序。

//該數據集為無序數據集,共有35947個點

WIDTH 35947

HEIGHT 1

1.2.8 VIEWPOINTS

數據集中點云的獲取視點。視點信息被指定為“平移(txtytz) + 四元數(qwqxqyqz)”,默認值是:VIEWPOINT 0 0 0 1 0 0 0

VIEWPOINT 0 0 0 1 0 0 0 //數據集的獲取視點

1.2.9 POINTS

點云中點的總數,從0.7版本就開始顯得有點多余,可能會在后續版本中舍去這個參數。

POINTS 35947 //該數據集中共有35947個點

1.2.10 DATA

指定存儲點云數據的數據存儲格式:ASCLL碼或二進制數據。

DATA ascii //該數據集用ASCLL碼存儲數據

1.3 點云數據

以ASCLL碼存儲的點云數據,每一個點占據一行,“nan”表示不存在或非法的數據。

-1.10698 3.272394 -0.447241

-1.80195 3.367094 -0.704211

-4.12496 5.602794 2.824819

......

二、PCD文件在PCL下的讀取

#include

#include

#include

int main()

{

pcl::PointCloud<:pointxyz>::Ptr cloud(new pcl::PointCloud<:pointxyz>);//創建點云指針

if(pcl::io::loadPCDFile<:pointxyz>("rabbit.pcd", *cloud )== -1)//讀入PCD格式文件,如果文件不存在,返回-1

{

PCL_ERROR("Couldn't read file rabbit.pcd\n");

return -1;

}

std::cout << "Loaded"

<< cloud->points.size()

<< "data points from rabbit.pcd with the following fields: "

<< std::endl;

//for (size_t i = 0; i < cloud->points.size(); i++) 顯示所有的點

//顯示前5個點

for (size_t i = 0; i < 5; i++)

{

std::cout << " " << cloud->points[i].x << " " << cloud->points[i].y << " " << cloud->points[i].z << std::endl;

}

system("pause");

return 0;

}

總結

以上是生活随笔為你收集整理的linux怎么查看.pcd文件,PCD文件格式详解及在PCL下读取PCD文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。