国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

python如何實現(xiàn)點云可視化交互——Open3D實例教程(獲取所選點的信息)保姆級教學

這篇具有很好參考價值的文章主要介紹了python如何實現(xiàn)點云可視化交互——Open3D實例教程(獲取所選點的信息)保姆級教學。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言

Open3D是目前python中可用的用于 3D 數(shù)據(jù)處理的現(xiàn)代庫,可以對點云、網(wǎng)格等三維數(shù)據(jù)進行讀取、采樣、配準、可視化等操作。其中對點云等三維模型進行可視化的功能在Python中顯得非常方便。

在通過對官方文檔的研究之后作者發(fā)現(xiàn)在Open3D的多種可視化函數(shù)中出現(xiàn)了返回所選點的信息的命令,將代碼跑通后就有了這篇三維物體可視化交互的文章,希望諸位能通過這篇文章獲取一些新的思路。

開發(fā)環(huán)境
python 3.9.12
Open3D 0.15.1
Pycharm 2021.2

點云的可視化

Open3D對于點云的可視化可以采用兩種方式,一種是直接用visualization下面的用于繪制幾何圖形列表的函數(shù)draw_geometries來進行顯示,另外一種就是使用可視化工具Visualizer來進行顯示。
第一種方式簡單快捷,但并不能返回所選點的信息,如果讀者發(fā)現(xiàn)了可以返回值的方法歡迎補充。

1. draw_geometries

Open3D的官方文檔中給出了四種不同的draw_geometries

  1. draw_geometries —— 用于繪制幾何圖形列表的函數(shù)
  2. draw_geometries_with_editing —— 具有編輯功能的用于繪制幾何圖形列表的函數(shù)
  3. draw_geometries_with_key_callbacks —— 具有自定義鍵調(diào)用功能的繪制幾何圖形列表的函數(shù)
  4. draw_geometries_with_vertex_selection —— 具有頂點選擇功能的繪制幾何圖形列表的函數(shù)

除了第一種函數(shù),后三種均可以選取點并在終端里顯示選取點的信息,但是并不會返回值,所以我們無法在程序中直接得到所選點的信息。

后三種選取點的可視化效果也不太一樣,這邊只針對第四種進行說明。

draw_geometries這種方式代碼比較簡單,平常使用的時候比較方便,感興趣的可以試著跑跑官方例程:

第一種 draw_geometries

import open3d as o3d
import numpy as np
print("Load a ply point cloud, print it, and render it")
ply_point_cloud = o3d.data.PLYPointCloud()
pcd = o3d.io.read_point_cloud(ply_point_cloud.path)
print(pcd)
print(np.asarray(pcd.points))
o3d.visualization.draw_geometries([pcd],
                                  zoom=0.3412,
                                  front=[0.4257, -0.2125, -0.8795],
                                  lookat=[2.6172, 2.0475, 1.532],
                                  up=[-0.0694, -0.9768, 0.2024])

小提示:在可視化窗口彈出后按H鍵可以在終端中查看詳細的操作菜單

第四種 draw_geometries_with_vertex_selection

import open3d as o3d
import numpy as np
print("Load a ply point cloud, print it, and render it")
ply_point_cloud = o3d.data.PLYPointCloud()
pcd = o3d.io.read_point_cloud(ply_point_cloud.path)
print(pcd)
print(np.asarray(pcd.points))
point = o3d.visualization.draw_geometries_with_key_callbacks([pcd])
print(point)

執(zhí)行代碼,可視化窗口跳出

python open3d,Open3D,python,開發(fā)語言,計算機視覺,3d,opencv

此時在可視化窗口按下Shift鍵進入點的選擇模式:

python open3d,Open3D,python,開發(fā)語言,計算機視覺,3d,opencv
這時候使用鼠標可以進行頂點的選擇,所選點的信息會顯示在終端中:python open3d,Open3D,python,開發(fā)語言,計算機視覺,3d,opencv
注意:代碼中用point來獲取返回值信息,而最后打印出來的point是None證明所選點只會在終端中顯示出來,并不會返回值

官方文檔中也說明了函數(shù)是沒有返回值的,那么如果想要獲得所選點的信息該怎么辦呢。這就可以使用另外一種方法了。

2.Visualizer

Open3D的官方文檔中也給出了四種不同的Visualizer

  1. Visualizer —— 可視化工具主類
  2. VisualizerWithEditing —— 具有編輯功能的可視化工具
  3. VisualizerWithKeyCallback —— 具有自定義鍵調(diào)用功能的可視化工具
  4. VisualizerWithVertexSelection —— 具有頂點選擇功能的可視化工具

對于open3d.visualization.Visualizer這種可視化工具,它的基本使用方法可以簡單總結為下面幾步(作者為了演示簡化了各函數(shù)參數(shù),感興趣的讀者可以參考官方文檔):

  1. 創(chuàng)建vis類
    vis = o3d.visualization.VisualizerWithVertexSelection()
  2. 創(chuàng)建可視化窗口
    vis.create_window(window_name=‘Open3D’, width=1920, height=1080, visible=True)
  3. 輸入點云或者網(wǎng)格數(shù)據(jù)
    vis.add_geometry(mesh)
  4. 激活窗口 此操作會阻塞線程
    vis.run()
  5. 清除可視化窗口
    vis.destroy_window()

在可視化過程中也可以通過相關函數(shù)進行獲得當前視角的RGB圖像和深度圖等操作,十分方便。

而open3d.visualization.VisualizerWithVertexSelection中增加了一個函數(shù)get_picked_points:

get_picked_points(self: open3d.cpu.pybind.visualization.VisualizerWithVertexSelection) → List[open3d::visualization::VisualizerWithVertexSelection::PickedPoint]

它的描述為Function to get picked points,此函數(shù)可以返回在可視化窗口選取點的坐標和索引信息。

下圖展示了返回值point的信息,可以看到point列表在選取一個點的情況下有0號點的coord三維位置信息以及index索引信息。

python open3d,Open3D,python,開發(fā)語言,計算機視覺,3d,opencv
整體的程序如下,用的是我自己的點云模型:

import open3d as o3d
import numpy as np
pcd = o3d.io.read_point_cloud("arrow.ply")
vis = o3d.visualization.VisualizerWithVertexSelection()
vis.create_window(window_name='Open3D', visible=True)
vis.add_geometry(pcd)
vis.run()
point = vis.get_picked_points()
vis.destroy_window()
print(point[0].index, np.asarray(point[0].coord))

彈出可視化界面

python open3d,Open3D,python,開發(fā)語言,計算機視覺,3d,opencv

按住Shift鍵

python open3d,Open3D,python,開發(fā)語言,計算機視覺,3d,opencv

選取一個或多個點(選中點顯示為綠色)

python open3d,Open3D,python,開發(fā)語言,計算機視覺,3d,opencv

關閉窗口即可獲得所選點的信息
而且信息會被儲存在point列表中

python open3d,Open3D,python,開發(fā)語言,計算機視覺,3d,opencv

如此這般就實現(xiàn)了點云的可視化交互,我們可以通過在可視化界面中直接進行選擇從而獲得一個或者一部分點的信息,進而可以直接在后續(xù)的程序中進行處理。

教程書寫不易,如果有幫到諸位還請點個贊或者收藏,謝謝大家。文章來源地址http://www.zghlxwxcb.cn/news/detail-784766.html

到了這里,關于python如何實現(xiàn)點云可視化交互——Open3D實例教程(獲取所選點的信息)保姆級教學的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包