1. 程式人生 > >PCL點雲的儲存和顯示

PCL點雲的儲存和顯示

1.pcl點雲的儲存


1.首先將獲得的點雲x,y,z分別存放在三個vector中

2.pcl  是一個名稱空間,跟std類似,PointCloud是類模板,<pcl::PointXYZ>是模板類例項化的型別

3cloud.height用來判斷是否為有序點雲,=1則是無序點雲也可以使用如下函式代替:if (!cloud.isOrganized ()),

4.對於無序點雲來說:(1)width就是指點雲中點的個數,此時也就是x,y或者z的個數,故等於TestPXc.size();

5.對於有結構點雲來說:width是指點雲資料集一行上點的個數。Anorganized point clouddataset is the name given to point clouds that resemble an organized image (or matrix) like structure, where the data is split into rows and columns.

立體相機或者TOF相機獲得的點雲資料就屬於這一類。對於有結構點雲的一大好處就是能知道點雲中點的相鄰關係,最近鄰操作效率就非常高,可以大大提高PCL中相應演算法的效率。但是結構點雲經過某些人為操作後,會變為無結構點雲,比如濾波操作等。而PCL演算法庫裡面的某些重要演算法,僅支援結構點雲,比如多平米分割演算法(OrganizedMultiPlaneSegmentation)。

例如:有結構點雲

cloud.width = 640; // Image-like organized structure, with 640 rows and 480 columns,

cloud.height = 480; // thus 640*480=307200 points total in the dataset

無結構點雲

cloud.width = 307200;

cloud.height = 1; // unorganized point cloud dataset with 307200 points

6。cloud.is_dense (bool)  判斷points中的資料是否是有限的(有限為true)或者說是判斷點雲中的點是否包含 Inf/NaN這種值(包含為false)。

7.points儲存了資料型別為PointT的一個動態陣列,例如,對於一個包含了XYZ資料的點雲,points是包含了元素為pcl::PointXYZ一個vector。 相當於vector<point3f>

8。cloud.points賦值後,通過儲存物件cloud可以將點雲儲存,儲存函式為I/O模組中的savePCDFileASCII,第一個引數為儲存名稱,第二個為點雲物件,儲存在工程目錄下。