python点云可视化_3D可视化神器之Open3D

很多时候在python里面你要找一个3D点云可视化的库真的是难啊。你的选择可能是:pcl

mayavi

matplolib

但是以上都不好用,pcl甚至没有靠谱的python wrapper,唯一一个开源的已经很久没有维护了。在3D显示或者点云处理中,效率是很重要的,不能岁岁便便用一个假的框架。此时一个由intel发布的Open3D出现了。

我在上一篇分享中也提到过open3d可以将pointnet++推理速度提速的到10fps以内。非常有用。(要知道点云的分割可是非常好时的)。

open3d 显示点云的效果。它的安装非常简单:

pip3 install open3d-python

导入的时候打概率可能因为IPYthon导致出错,安装IPython就行。实力程序:

import os

import numpy as np

from open3d import *

points = np.random.rand(10000, 3)

point_cloud = PointCloud()

point_cloud.points = Vector3dVector(points)

draw_geometries([point_cloud])

Open3D的真正强大之处不在于精简的显示点云,而是一些自定义的功能,这个在可视化的时候非常有用。

比如我们可以添加自定义的 draw_geometries 函数,显示结果可以:

def custom_draw_geometry_with_key_callback(pcd):

def change_background_to_black(vis):

opt = vis.get_render_option()

opt.background_color = np.asarray([0, 0, 0])

return False

def load_render_option(vis):

vis.get_render_option().load_from_json(

"../../TestData/renderoption.json")

return False

def capture_depth(vis):

depth = vis.capture_depth_float_buffer()

plt.imshow(np.asarray(depth))

plt.show()

return False

def capture_image(vis):

image = vis.capture_screen_float_buffer()

plt.imshow(np.asarray(image))

plt.show()

return False

key_to_callback = {}

key_to_callback[ord("K")] = change_background_to_black

key_to_callback[ord("R")] = load_render_option

key_to_callback[ord(",")] = capture_depth

key_to_callback[ord(".")] = capture_image

draw_geometries_with_key_callbacks([pcd], key_to_callback)

custom_draw_geometry_with_key_callback(point_cloud)

看着还不错。本来想显示一下kitti点云的。但是好像有的点是4的倍数有的是5的倍数, 这,,,这怎么reshape?

后面再更新

本文首发自奇异社区-一个专注人工智能等高科技的社区论坛:奇异社区​talk.strangeai.pro

你可能感兴趣的:(python点云可视化)