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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

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

發(fā)布時(shí)間:2023/12/16 linux 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux怎么查看.pcd文件,PCD文件格式详解及在PCL下读取PCD文件 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、PCD簡(jiǎn)介

1.1 PCD版本

在點(diǎn)云庫(kù)PCL 1.0發(fā)布之前,PCD文件格式就已經(jīng)發(fā)展更新了許多版本。這些新舊不同的版本用PCD_Vx來(lái)編號(hào)(例如PCD_V5、PCD_V6和PCD_V7等),分別代表PCD文件的0.5版、0.6版和0.7版。在PCL中,用到的PCD文件格式的正式發(fā)布是0.7版,即PCD_V7。

1.2 頭文件格式

PCD文由?“頭文件 + 點(diǎn)云數(shù)據(jù)”構(gòu)成,頭文件聲明了該點(diǎn)云數(shù)據(jù)集的基本特性。下面以PCD_V7版本的PCD文件為例,對(duì)頭文件進(jìn)行介紹。打開(kāi)經(jīng)典的兔子模型(用記事本就能打開(kāi)),頭文件及部分點(diǎn)云數(shù)據(jù)如下所示:

# .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可知該點(diǎn)云數(shù)據(jù)集是0.7版本的。

VERSION 0.7 //PCD版本號(hào)為0.7版

1.2.2 FIELDS

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

FIELDS x y z //該數(shù)據(jù)集中包含每一個(gè)點(diǎn)的xyz緯度信息

1.2.3 SIZE

儲(chǔ)存每個(gè)維度信息占用的字節(jié)數(shù)(byte)。1指用char型數(shù)據(jù)存儲(chǔ)維度信息,2指用short型數(shù)據(jù)存儲(chǔ)維度信息,4指用int或float型數(shù)據(jù)存儲(chǔ)維度信息,8指用double型數(shù)據(jù)存儲(chǔ)維度信息。

SIZE 4 4 4 //x y z每個(gè)維度均占用4個(gè)字節(jié)

1.2.4 TYPE

用字符指定每一個(gè)維度的數(shù)據(jù)類型。I表示有符號(hào)類型:int8(char),int16(short),int32(int);U表示無(wú)符號(hào)類型:uint8(unsigned char),uint 16(unsigned short),uint32(unsigned int);F表示浮點(diǎn)型float和double。

TYPE F F F //x y z每個(gè)維度的均為4字節(jié)的浮點(diǎn)型,即為float

1.2.5 COUNT

每個(gè)維度包含的元素個(gè)數(shù)。

COUNT 1 1 1 //x y z每個(gè)維度均包含1個(gè)元素

1.2.6 WIDTH

點(diǎn)云數(shù)據(jù)集可分為有序數(shù)據(jù)集和無(wú)序數(shù)據(jù)集兩種。有序數(shù)據(jù)集類似矩陣,有行列之分,無(wú)序數(shù)據(jù)集則無(wú)行列之分。根據(jù)數(shù)據(jù)集是否有序,WIDTH由不同的含義。

對(duì)有序數(shù)據(jù)集而言:表示數(shù)據(jù)集的寬度(每行點(diǎn)的數(shù)目);

對(duì)于無(wú)序數(shù)據(jù)集而言:表示數(shù)據(jù)集中點(diǎn)的總數(shù)(和下面的POINTS一樣)。

1.2.7 HEIGHT

對(duì)有序數(shù)據(jù)集而言:表示數(shù)據(jù)集的高度(行數(shù));

對(duì)于無(wú)序數(shù)據(jù)集而言:被設(shè)置為1,用于聲明一個(gè)數(shù)據(jù)集是否有序。

//該數(shù)據(jù)集為無(wú)序數(shù)據(jù)集,共有35947個(gè)點(diǎn)

WIDTH 35947

HEIGHT 1

1.2.8 VIEWPOINTS

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

VIEWPOINT 0 0 0 1 0 0 0 //數(shù)據(jù)集的獲取視點(diǎn)

1.2.9 POINTS

點(diǎn)云中點(diǎn)的總數(shù),從0.7版本就開(kāi)始顯得有點(diǎn)多余,可能會(huì)在后續(xù)版本中舍去這個(gè)參數(shù)。

POINTS 35947 //該數(shù)據(jù)集中共有35947個(gè)點(diǎn)

1.2.10 DATA

指定存儲(chǔ)點(diǎn)云數(shù)據(jù)的數(shù)據(jù)存儲(chǔ)格式:ASCLL碼或二進(jìn)制數(shù)據(jù)。

DATA ascii //該數(shù)據(jù)集用ASCLL碼存儲(chǔ)數(shù)據(jù)

1.3 點(diǎn)云數(shù)據(jù)

以ASCLL碼存儲(chǔ)的點(diǎn)云數(shù)據(jù),每一個(gè)點(diǎn)占據(jù)一行,“nan”表示不存在或非法的數(shù)據(jù)。

-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>);//創(chuàng)建點(diǎn)云指針

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++) 顯示所有的點(diǎn)

//顯示前5個(gè)點(diǎn)

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;

}

總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。