PCLVisualizer視覺化類(4)

2022-06-10 06:48:10 字數 2291 閱讀 3341

部落格**自:

使用者經常需要通過多視口比較點雲,如果使用者在同乙個視口繪製點雲,會導致資訊混亂。pclvisualizer視覺化類允許使用者通過不同視口(viewport)繪製多個點雲,這樣方便對點雲進行比較分析,viewportsvis函式的**演示如何用多視口來顯示點雲計算法線的方法結果對比,如圖1所示,並進行比較分析,利用不同的搜尋半徑,基於同一點雲計算出對應不同半徑的兩組法線,第一組,搜尋半徑為0.05,基於該半徑計算的法線用黑色背景顯示,第二組,搜尋半徑為0.1,基於該半徑計算的法線用灰色背景顯示。這樣比較兩組法線,使用者很容易觀察到不同演算法引數處理效果的差異,通過這種方法,使用者可以很容易對演算法引數做出選擇,並實時的得到所設定引數的處理效果。

圖1 多視口顯示示例

boost::shared_ptrviewer (new pcl::visualization::pclvisualizer ("

3d viewer

"));

viewer->initcameraparameters ();

上面是建立視窗物件的標準**。

int v1(0

);viewer->createviewport (0.0, 0.0, 0.5, 1.0

, v1);

viewer->setbackgroundcolor (0, 0, 0

, v1);

viewer->addtext ("

radius: 0.01

", 10, 10, "

v1 text

", v1);

pcl::visualization::pointcloudcolorhandlerrgbfield

rgb (cloud);

viewer->addpointcloud(cloud, rgb, "

sample cloud1

", v1);

上面幾行**,建立新的視口,所需的四個引數是視口在x軸的最小值、最大值、y軸的最小值、最大值,取值在0-1之間。我們建立的視口分布於視窗的左半部分,最後乙個字串引數,用來唯一標識該視口,在其他改變該視口內容的呼叫中,需要以該唯一標識為引數,我們還設定該視口的背景顏色,新增乙個標籤以區別於其他視口,利用rgb顏色著色器並新增點雲到當前視口中。

int v2(0);

viewer->createviewport (0.5, 0.0, 1.0, 1.0, v2);

viewer->setbackgroundcolor (0.3, 0.3, 0.3, v2);

viewer->addtext ("radius: 0.1", 10, 10, "v2 text", v2);

pcl::visualization::pointcloudcolorhandlercustomsingle_color (cloud, 0, 255, 0);

viewer->addpointcloud(cloud, single_color, "sample cloud2", v2);

然後,我們對第二視口做同樣的操作,使所建立的視點分布於右半視窗。我們將該視口背景賦予灰色,以便可以明顯區別,雖然新增了同樣的點雲,但這次給點雲用自定義顏色著色。

viewer->setpointcloudrenderingproperties (pcl::visualization::pcl_visualizer_point_size, 3, "

sample cloud1");

viewer->setpointcloudrenderingproperties (pcl::visualization::pcl_visualizer_point_size, 3, "

sample cloud2");

viewer->addcoordinatesystem (1.0);

上面三行**為所有視口設定屬性,大多數pclvisualizer類的方法成員都有乙個可以選擇的視口id引數,當設定該引數時,該方法只作用於所設定視口,不設定該引數的話,該方法作用於所有視口,就像這三行**一樣。

viewer->addpointcloudnormals(cloud, normals1, 10, 0.05, "

normals1

", v1);

viewer->addpointcloudnormals(cloud, normals2, 10, 0.05, "

normals2

", v2);

最後,我們新增法線,每個視口都有一組對應的法線。

點雲視覺化方法 PCLVisualizer

3d點雲視覺化可以通過rviz,cloud viewer或者pclvisualizer等方法進行視覺化,這些介紹pclvisualizer的方法。首先是載入點雲並顯示 include include int main int argc,char argv viewer addpointcloud c...

視覺化與可視分析專案設計

1.revoler visual analysis relation evolution in temporal data 基於時序資料時序關係演化的可視分析 生活和科學研究中常存在各種的時序資料,其中蘊含了時序關係且這樣的關係往往發生演變。本研究則通過視覺化與可視分析的方式,從巨集觀與細節的角度對...

visual hull 可視外殼

在計算機動畫 遊戲和虛擬實境等領域中都涉及到大量的三維模型,在這些領域中,簡單 快速地獲取三維模型具有極其重要的意義.目前,人們主要通過3 種方式來獲取三維模型 1 利用傳統幾何造型技術直接構造模型 2 利用三維掃瞄裝置對真實物體進行掃瞄,進而重建出模型 3 利用從各個視角拍攝的真實物體的多幅影象重...