PCL中計算點雲的法向量並顯示

2021-09-02 23:40:06 字數 2027 閱讀 7499

參考源:

利用的是最小二乘估計的方法計算了點雲的法向量,並且提供了兩種法線的顯示方法,還設定了多個viewport,練習了點雲的顯示:

#include "stdafx.h"

#include #include #include #include #include #include int main()

//計算法線

pcl::normalestimationn;

pcl::pointcloud::ptr normals(new pcl::pointcloud);

//建立kdtree來進行近鄰點集搜尋

pcl::search::kdtree::ptr tree(new pcl::search::kdtree);

//為kdtree新增點運資料

tree->setinputcloud(cloud);

n.setinputcloud(cloud);

n.setsearchmethod(tree);

//點雲法向計算時,需要所搜的近鄰點大小

n.setksearch(20);

//開始進行法向計算

n.compute(*normals);

/*圖形顯示模組*/

boost::shared_ptrviewer(new pcl::visualization::pclvisualizer("3d viewer"));

//viewer->initcameraparameters();

int v1(0), v2(1),v3(2),v4(3);

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

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

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

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

//設定背景顏色

viewer->setbackgroundcolor(5,55, 10, v1);

//設定點雲顏色

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

//新增座標系

viewer->addcoordinatesystem(0.5, v1);

viewer->addpointcloud(cloud, "sample cloud",v1);

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

viewer->addpointcloudnormals(cloud, normals, 50, 0.01, "normals",v2);

viewer->addpointcloud(cloud, single_color, "sample cloud1", v3);

viewer->addpointcloud(cloud, "sample cloud3", v4);

//設定點雲大小

viewer->setpointcloudrenderingproperties(pcl::visualization::pcl_visualizer_point_size, 2, "sample cloud3", 4);

//新增點雲法向量的另一種方式;

//解決**

//pcl::pointcloud::ptr cloud_with_normals(new pcl::pointcloud);

//pcl::concatenatefields(*cloud, *normals, *cloud_with_normals);

//viewer->addpointcloudnormals(cloud_with_normals, 50, 0.01, "normals");

//while (!viewer->wasstopped())

return 0;

}

pcl計算點雲法向量

最近因為專案,需要計算點雲的法向量,所以在網上看了一些資料,然後知道pcl庫裡面有這些功能,pcl的法向量計算的原理 pcl裡面計算點雲 自己的理解 根據頂點取樣最近的區域性點雲 k個 根據自己的點雲擬合出乙個區域性平面,然後計算平面的法向量。就是頂點的向量。計算可以通過pca那種,可以計算頂點的三...

pcl之MLS演算法計算並統一法向量

該演算法比直接基於svd的演算法慢,但是對法向進行了統一。include include include include include include include include 包含基本視覺化類 include include using namespace std typedef pcl ...

點雲的法向量

1.在這裡採用的是pcl點雲庫。pcl點雲庫可能存在配置問題,用cmake時候預設支援的是32位的處理,所以建議安裝pcl 32位的all in one。這樣不容易產生錯誤。2.下面試cmake的內容。cmake minimum required version 2.6 fatal error pr...