Визуализация облака точек с помощью open3d

Я использую следующий код для визуализации облака точек.

import open3d as o3d
pcd = o3d.io.read_point_cloud("assets/pcd.ply")

o3d.visualization.draw_geometries([pcd],lookat=[2.6172, 2.0475, 1.532],)

К сожалению, я получаю следующую ошибку

Traceback (most recent call last):
  File "/home/app/pointcloud.py", line 5, in <module>
    o3d.visualization.draw_geometries([pcd],lookat=[2.6172, 2.0475, -0.4])
TypeError: draw_geometries(): incompatible function arguments. The following argument types are supported:
    1. (geometry_list: List[open3d.open3d_pybind.geometry.Geometry], window_name: str = 'Open3D', width: int = 1920, height: int = 1080, left: int = 50, top: int = 50, point_show_normal: bool = False, mesh_show_wireframe: bool = False, mesh_show_back_face: bool = False) -> None

Invoked with: [geometry::PointCloud with 677248 points.]; kwargs: lookat=[2.6172, 2.0475, -0.4]

я что-то упускаю?

2 ответа

Здесь нет lookatпараметр в функции draw_geometries. Вы можете просто визуализировать без этого параметра

Более глубокая причина ошибки вызвана несоответствующей версией open3D. В последней версии были изменены некоторые параметры и функции.

Я не уверен в версии Open3D 3-летней давности, но есть вариант draw_geometrys, который принимаетlookatпеременная сейчас. Код pybind для генерации привязок Python находится здесь , но обратите внимание, что необходимо передать все 4 переменные:front, lookat, up, zoom.

      o3d.visualization.draw_geometries(
            geometries,
            front=[0.4699189535486108, -0.62764022425775134, 0.62068021233921933],
            lookat=[ -0.97243714332580566, -0.1751408576965332, 0.51464511454105377 ],
            up=[ -0.36828927493940194, 0.49961995188329117, 0.78405542766104697 ],
            zoom=0.15999999999999961,
        )

Совет. Вышеуказанные значения сначала генерируются при выполненииo3d.visualization.draw_geometries(geometries,), установите положение камеры и затем нажмитеCtrl + Cкоторый копирует настройки управления просмотром. Пример вывода: -

      {
    "class_name" : "ViewTrajectory",
    "interval" : 29,
    "is_loop" : false,
    "trajectory" : 
    [
        {
            "boundingbox_max" : [ 3.0492053031921387, 6.549717903137207, 1.4599999189376831 ],
            "boundingbox_min" : [ -4.99407958984375, -6.8999996185302734, -0.43070968985557556 ],
            "field_of_view" : 60.0,
            "front" : [ 0.0, 0.0, 1.0 ],
            "lookat" : [ -0.97243714332580566, -0.1751408576965332, 0.51464511454105377 ],
            "up" : [ 0.0, 1.0, 0.0 ],
            "zoom" : 0.69999999999999996
        }
    ],
    "version_major" : 1,
    "version_minor" : 0
}
Другие вопросы по тегам