pcl視覺化的那些事

2021-09-18 03:21:26 字數 3726 閱讀 8312

linux 下可直接在命令列輸入pcl_viewr path/to/.pcd或.vtk可直接顯示pcl中的點雲檔案。

pcl_viewr幾個常用的命令:

r鍵: 重現視角。如果讀入檔案沒有在主視窗顯示,不妨按下鍵盤的r鍵一試。

j鍵:截圖功能。

g鍵:顯示/隱藏 座標軸。

滑鼠:左鍵,使影象繞自身旋轉; 滾輪, 按住滾輪不松,可移**像,滾動滾輪,可放大/縮小 影象; 右鍵,「原地」放大/縮小。

-/+:-(減號)可縮小點; +(加號),可放大點。

pcl_viewe -bc r,g,b /path/to/.pcd:可改變背景色.

pcl_viewer還可以用來直接顯示pfh,fpfh(fast point feature histogram),vfh等直方圖。

常用的pcl_viewer好像就這些,其他未涉及到的功能可通過pcl_viewer /path/.pcd開啟影象,按鍵盤h(獲取幫助)的方式獲得.

所謂簡單視覺化類,是指直接在程式中使用,而且不支援多執行緒。

必須包含的標頭檔案#include,宣告乙個視覺化類直接pcl::visualization::cloudviewer viewer ("test");即可,它的意思是說,我建立了乙個cloudviewer的視覺化類,這個視覺化視窗的名字叫做test; 顯示用viewer.showcloud(cloud), 要想讓自己所創視窗一直顯示,則加上while (!viewer.wasstopped());即可, 或者直接viewr.spin(0);

以一段程式為例:

#include //包含基本視覺化類

#include //設定鍵盤互動函式,按下`space`鍵,某事發生

void keyboardevent(const pcl::visualization::keyboardevent &event,void *nothing)

int main (int argc, char **ar**)

}

在主程式2中,處理顯示資料檔案包含以下幾種:

一. 計算並顯示法向量,具體在自己的筆記pcl法向量的計算與顯示

二. 我的筆記畫線與顯示,可用於配準計算中對應點對的顯示,不過用畫線的辦法很不好.

三. 單純的自定義的顯示點雲有如下常用函式:

pcl::visualization::pointcloudcolorhandlercustomsources_cloud_color(source,250,0,0); //這句話的意思是:對輸入為pcl::pointxyz型別的點雲,著色為紅色。其中,source表示真正處理的點雲,sources_cloud_color表示處理結果.

view->addpointcloud(source,sources_cloud_color,"sources_cloud_v1",v1); //將點雲source,處理結果sources_cloud_color,新增到檢視中,其中,雙引號中的sources_cloud_v1,表示該點雲的」標籤「,我們依然可以稱之為」名字「,之所以設定各個處理點雲的名字,是為了在後續處理中易於區分; v1表是新增到哪個檢視視窗(pcl中可設定多視窗模式)

view->setpointcloudrenderingproperties(pcl::visualization::pcl_visualizer_point_size,3,"sources_cloud_v1"); //設定點雲屬性. 其中pcl_visualizer_point_size表示設定點的大小為3,雙引號中」sources_cloud_v1「,就是步驟2中所說的標籤。

view->setpointcloudrenderingproperties(pcl::visualization::pcl_visualizer_opacity,1,"sources_cloud_v1"); //主要用來設定標籤點雲的不透明度,表示對標籤名字為"sources_cloud_v1"的標籤點雲設定不透明度為1,也就是說透明度為0. 預設情況下完全不透明。

四. 顯示配準中的對應點對關係.

要想顯示點對之間的對應關係, 首先必須計算出對應點對, pcl中對應點對的計算可通過pcl::registration::correspondenceestimationcorrespond_est;計算,計算出對應點對後, source 和 target對應點的索引會儲存在vectorapcl::correspondences a中.要想顯示點對的對應關係,只需view->addcorrespondences(source,target,a,"correspond",v1);其中,pcl::pointxyz表示所新增對應點對的型別為pointxyz型別的,引數中的前兩個表示目標點雲和源點雲,a儲存從目標點雲到源點雲的對應點的索引,」correspond「依然是自定義的標籤,v1表示新增到哪個視窗.

為了使得對應點更加個性化,我們可以對它進行一下」定製「:

view->setshaperenderingproperties(pcl::visualization::pcl_visualizer_line_width,2,"correspond"); //設定對應點連線的粗細.pcl_visualizer_line_width,表示操作,線段的寬度為2(提醒一下自己: 線段的寬度最好不要超過自定義的點的大小),"correspond"表示對對應的標籤做處理.

view->setshaperenderingproperties(pcl::visualization::pcl_visualizer_color,0,0,1,"correspond"); //設定對應點連線的顏色,範圍從0-1之間。

五. 多視窗及人機互動設定.

具體操作即設定請看pcl之icp實現

六. 如果用pcl的視覺化類顯示直方圖,則可以這樣做(以fpfh為例):

#include //直方圖的視覺化

#include #include int main (int argc, char **ar**)

也可以這樣顯示直方圖不過需要在新增標頭檔案#include

pcl::visualization::pclplotter plotter;

// we need to set the size of the descriptor beforehand.

plotter.addfeaturehistogram(*fpfhs, 300); //設定的很座標長度,該值越大,則顯示的越細緻

PCL視覺化顯示點雲

1 引用 僅僅是簡單的顯示點雲,可以使用cloudviewer類。這個類非常簡單易用。但要注意,它不是執行緒安全的。如果要用於多執行緒,還要參考pclvisualizer。需要注意的是,pointcloud的資料型別要和pcd檔案中或者 中的pointt一致!並且 cloudviewer除了顯示什麼...

PCL入門《七》 視覺化PCLVisualizer

pcl的點雲視覺化的一種最常用的方法就是pclvisualizer 它是基於vtk的視覺化類,需要引入標頭檔案 include通常用法是 pcl visualization pclvisualizer ptr viewer new pcl visualization pclvisualizer 3d...

PCL 多點雲視覺化視窗

視覺化點雲的時候,有時候需要顯示對比,這時就需要同時顯示兩個甚至多個點雲。viewer createviewport double xmin,double ymin,double xmax,double ymax createviewport是用於建立新視口的函式,所需的4個引數分別是視口在x軸的最...