PCL庫學習筆記(PCL Visualizer)

2021-10-06 09:34:17 字數 3937 閱讀 2384

本文展示了pcl visualizer的幾種基本用法。**的主體是點雲庫提供的源**。由於其是由cmake進行編譯,有輸入引數的選擇問題。為了方便vs的除錯執行過程,將其中的輸入介面進行了修改:

**中學習到的幾個知識點:

1、int

main

(int argc,

char

* ar**[

]) 中arg和ar**引數的含義;

80985928

2、注意rgb合成的原理

uint32_t rgb =

(static_cast

<

uint32_t

>

(r)<<16|

static_cast

<

uint32_t

>

(g)<<8|

static_cast

<

uint32_t

>

(b))

;

/* \author geoffrey biggs */

#include

#include

#include

#include

#include

#include

#include

#include

// 幫助

void

printusage

(const

char

* progname)

boost::shared_ptr

******vis

(pcl::pointcloud

::constptr cloud)

boost::shared_ptr

rgbvis

(pcl::pointcloud

::constptr cloud)

boost::shared_ptr

customcolourvis

(pcl::pointcloud

::constptr cloud)

boost::shared_ptr

normalsvis

( pcl::pointcloud

::constptr cloud, pcl::pointcloud

::constptr normals)

boost::shared_ptr

shapesvis

(pcl::pointcloud

::constptr cloud)

boost::shared_ptr

viewportsvis

( pcl::pointcloud

::constptr cloud, pcl::pointcloud

::constptr normals1, pcl::pointcloud

::constptr normals2)

unsigned

int text_id =0;

void

keyboardeventoccurred

(const pcl::visualization::keyboardevent &event,

void

* viewer_void)

text_id =0;

}}void

mouseeventoccurred

(const pcl::visualization::mouseevent &event,

void

* viewer_void)

}boost::shared_ptr

interactioncustomizationvis()

// -----main-----

intmain

(int argc,

char

** ar**)

else

if(commend ==

"-c"

)else

if(commend ==

"-r"

)else

if(commend ==

"-n"

)else

if(commend ==

"-a"

)else

if(commend ==

"-v"

)else

if(commend ==

"-i"

)// 自行建立一隨機點雲

pcl::pointcloud

::ptr basic_cloud_ptr

(new pcl::pointcloud);

pcl::pointcloud

::ptr point_cloud_ptr

(new pcl::pointcloud);

std::cout <<

"genarating example point clouds.\n\n"

;// 以橢圓為邊線沿z軸拉伸獲取其點雲,並賦予紅綠藍漸變色。

uint8_tr(

255),g

(15),

b(15)

;for

(floatz(

-1.0

); z <=

1.0; z +

=0.05)if

(z <

0.0)

else

} basic_cloud_ptr-

>width =

(int

)basic_cloud_ptr-

>points.

size()

; basic_cloud_ptr-

>height =1;

point_cloud_ptr-

>width =

(int

)point_cloud_ptr-

>points.

size()

; point_cloud_ptr-

>height =1;

// 0.05為搜尋半徑獲取點雲法線

pcl::normalestimation ne;

ne.setinputcloud

(point_cloud_ptr)

; pcl::search::kdtree

::ptr tree

(new pcl::search::kdtree()

);ne.

setsearchmethod

(tree)

; pcl::pointcloud

::ptr cloud_normals1

(new pcl::pointcloud);

ne.setradiussearch

(0.05);

ne.compute

(*cloud_normals1)

;// 0.1為搜尋半徑獲取點雲法線

pcl::pointcloud

::ptr cloud_normals2

(new pcl::pointcloud);

ne.setradiussearch

(0.1);

ne.compute

(*cloud_normals2)

; boost::shared_ptr viewer;

if(******)

else

if(rgb)

else

if(custom_c)

else

if(normals)

else

if(shapes)

else

if(viewports)

else

if(interaction_customization)

// 主迴圈

while

(!viewer-

>

wasstopped()

)}

PCL學習筆記

1.通過讀取pcd檔案生成點雲 std vector int pcdfile indices pcl console parse file extension argument argc,ar pcd 在輸入引數中找到含有pcd的檔案 std string filename ar pcdfile i...

PCL學習筆記(二) PCL編碼風格

一 pcl命名規範 1 檔案命名 所有的檔名單詞之間應該用下劃線隔開 2 目錄命名 所有的目錄及其子目錄命名時,如果有多個單詞組成。其之間用下劃線隔開。3.include語句 當檔案在同一目錄下時include指示語句用雙引號,在其他情況下則用尖括號。include include include ...

PCL學習筆記(1)

第三章 pcl基礎 3.1.1 pcl推薦命名規範 類名和其他自定義型別應該是camelcased 駝峰命名 命名規範,即連寫單詞組成命名,每個單詞首字母大寫 迭代子變數應反映出它們的迭代物件常量名字應該大寫類成員變數命名單詞之間用下劃線隔開並以下劃線結尾 3.3.2 pointt型別 struct...