[英]How do I generate a partial view of a mesh as a point cloud in Python?
我有一個網格數據集,我想用它來生成局部視圖數據作為點雲。 換句話說,模擬 RGB-D 傳感器的工作方式。
我的解決方案非常幼稚,所以請隨意忽略它並提出另一種方法。
它包括從 o3d 可視化中獲取渲染的 RGB 和渲染的 D 圖像,如下所示:
vis.add_geometry(tr_mesh)
... # set some params to have a certain angle
vis.capture_screen_image('somepath.png')
vis.capture_depth_image('someotherpath.png')
這些被保存為 PNG 文件。 然后我將它們組合成一個 o3d RGBDImage:
# Load the RGB image
rgb = o3d.io.read_image(rgb_path)
# Load the depth image
depth = o3d.io.read_image(depth_path)
# Convert the RGB and depth images into pointcloud
rgbd = o3d.geometry.RGBDImage.create_from_color_and_depth(color=o3d.geometry.Image(rgb),
depth=o3d.geometry.Image(depth),
convert_rgb_to_intensity=False)
並將其轉換為 PointCloud
pcd = o3d.geometry.PointCloud.create_from_rgbd_image(image=rgbd,
intrinsic=o3d.camera.PinholeCameraIntrinsic(o3d.camera.PinholeCameraIntrinsicParameters.PrimeSenseDefault))
這有很多限制:
同樣,這是一個非常幼稚的解決方案,因此非常歡迎完全不同的方法。
這不是我可以從網格生成點雲嗎? 因為我想要局部視圖。 所以想想這個問題,但背面剔除。
回到解決方案。
不需要圖像捕獲。 有一個function叫vis.capture_depth_point_cloud()
所以局部視圖可以通過簡單地運行來生成
vis.add_geometry(tr_mesh)
... # set some params to have a certain angle
vis.capture_depth_point_cloud("somefilename.pcd")
這還有一個非常有用的名為convert_to_world_coordinate
的參數。
似乎沒有辦法改變傳感器的分辨率。 雖然向上(或向下)縮放 object,捕獲點雲,然后向下(或向上)縮放點雲應該獲得相同的效果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.