Open3D動態點雲顯示 c

2021-10-11 13:29:05 字數 1408 閱讀 6246

auto cloud_ptr = std::make_shared(); //建立乙個存放點雲的指標

open3d::visualization::visualizer visualizer; //建立乙個視覺化物件

visualizer.createvisualizerwindow("open3d",640,480,50,50,true); //建立乙個視窗

visualizer.getrenderoption().point_size_ = 0.1;//設定點雲點的大小

eigen::vector3d backcolo(0,0,0);

visualizer.getrenderoption().background_color_ = backcolo;//設定視窗背景色

visualizer.getrenderoption().show_coordinate_frame_ = true;

int flag = 0;//做邏輯判斷用

float* p3d = (float)malloc(m_ip3dlen); //malloc 乙個大的記憶體 存放實時更新的點雲,格式為下xyzxyzxyz...

while(true)

for (int a = 0; a < depth_wide * depth_heig; ++a) //把顏色資料放進去

cloud_ptr->normalizenormals();

auto mcloud_ptr = cloud_ptr->voxeldownsample(0.05);//**素取樣

mcloud_ptr->estimatenormals(open3d::geometry::kdtreesearchparamhybrid(0.01, 50));//設定法線,好像沒什麼效果

open3d::geometry::axisalignedboundingbox a = mcloud_ptr->getaxisalignedboundingbox();//獲取點雲的包圍框

std::shared_ptrmbox(new open3d::geometry::axisalignedboundingbox(a));

mbox->color_ = eigen::vector3d(1, 0, 0);//設定包圍框顏色

if (!flag)

visualizer.updategeometry(cloud_ptr);//更新顯示

visualizer.addgeometry(mbox);//更新包圍框

visualizer.pollevents(); //下頭這兩個不清楚啥用

visualizer.updaterender();

cloud_ptr->points_.clear();

cloud_ptr->colors_.clear();

}

大致**如上,修改修改就能用

Open3D 獲取mesh屬性

首先看一下在cloudcompare軟體中的實現 mesh flag vertices 檢查網格的基本特性,為每個網格樣本做標誌 0 normal,1 border,2 non manifold 三角網格有幾個可以用open3d測試的屬性。乙個重要的屬性是流形性質 manifold property...

Open3D 去除mesh中的噪點

各種重建演算法的結果 比如rgbd integration 並不是只有乙個三角網格而是有多個網格。一些較小的部分 相比如主物體較小 是由於雜訊引起的,我們會想要移除它。open3d實現了乙個連通分量演算法cluster connected s,將每個三角形分配給乙個連線的三角集群,從集群中返回每乙個...

Open3D視覺化點雲的問題記錄

因為科研工作,需要對點雲資料進行視覺化 包括input ground truth segmentation和prediction segmentation三項 由於之前嘗試過使用open3d進行點雲視覺化處理,所以今天又拿來操作了一番,發現了乙個問題,在這裡記錄一下。在我的mac catalina ...