Open3D实时点云显示

文章目录


前言

一般情况我们通过open3d中的draw_geometries()进行点云可视化,但这个函数会锁定一个进程直到可视化的窗口被关闭,才会继续渲染下一帧点云图像,无法做到点云持续的动态显示。本文介绍了一个自定义渲染循环的教程。


下面先展示下效果:
在这里插入图片描述


代码

# -*- coding: utf-8 -*-
# @Time : 2022/10/25 16:22
# @Author : JulyLi
# @File : inno_sdk.py

import open3d as o3d
import numpy as np
import queue
import threading
from os import path


def visualize_pointscloud(show_q):
    vis = o3d.visualization.Visualizer()
    vis.create_window(width=800, height=600)
    pointcloud = o3d.geometry.PointCloud()
    to_reset = True
    vis.add_geometry(pointcloud)

    while True:
        try:
            pcd = show_q.get()

            pcd = np.asarray(pcd.points).reshape((-1, 3))
            pointcloud.points = o3d.utility.Vector3dVector(pcd)
            # vis.update_geometry()
            # 注意,如果使用的是open3d 0.8.0以后的版本,这句话应该改为下面格式
            vis.update_geometry(pointcloud)
            if to_reset:
                vis.reset_view_point(True)
                to_reset = False
            vis.poll_events()
            vis.update_renderer()
        except:
            continue


if __name__ == '__main__':

    show_q = queue.Queue(1)
    visual = threading.Thread(target=visualize_pointscloud, args=(show_q,))
    visual.start()

    input_dir = r"D:\Bvision\PCL\9818"
    frame = 0
    while True:
        input_name = path.join(input_dir, str(frame)+".pcd")
        print(input_name)
        # 获取雷达数据
        pcd = o3d.io.read_point_cloud(input_name)

        if show_q.full():
            show_q.get()
        show_q.put(pcd)
        frame += 1  # 迭代读取下一张图片
        frame %= 98  # 由于文件夹中最多只有98图片,超出了,又会回到0,循环

总结

这里整体思想是按名称读取文件然后送入队列中,使用多线程进行点云显示,当文件读完之后,重新开始读取。
读者可以根据自己的数据情况修改,已完成实时点云显示。

参考文档:
https://blog.csdn.net/weixin_43419116/article/details/110987436
https://blog.csdn.net/suyunzzz/article/details/105183824
如果阅读本文对你有用,欢迎一键三连呀!!!
2022年11月18日15:38:30
在这里插入图片描述

Open3D是一款用于处理和可视化3D点云数据的开源软件库。它提供了一系列的算法和工具,方便用户进行点云数据的处理、重建、配准、分割等操作。其中一个重要的特性就是支持实时点云处理。 在实时点云处理方面,Open3D可以通过与深度传感器(如Kinect、RealSense等)结合使用来实现实时获取和处理点云数据。通过与传感器相连,Open3D可以实时获取深度图像和彩色图像,并通过深度信息生成点云数据。这样,用户就可以实时地观察到场景中的点云数据,并进行实时的处理和可视化。 在获取到实时点云数据之后,Open3D还提供了一系列的算法和工具,可以对点云数据进行实时的处理和分析。比如,可以实时地对点云数据进行滤波,去除噪声和离群点,以便在后续的处理中获得更好的效果。同时,Open3D还支持实时点云配准算法,可以将多个点云数据进行配准,获得整体的场景信息。 除了数据处理之外,Open3D还提供了实时点云可视化功能。可以实时地将点云数据转化为图像,并在图像中显示出来。用户可以通过鼠标进行缩放、旋转和平移等操作,以便观察点云数据的各个角度和细节。同时,Open3D还支持实时点云交互,用户可以在点云数据上进行标记、测量和分析等操作。 总的来说,Open3D提供了一系列的功能和工具,方便用户进行实时点云的处理和可视化。通过与深度传感器结合使用,用户可以实时获取和处理点云数据,进行滤波、配准和可视化等操作。这为研究者和开发者们提供了一个方便和高效的平台,用于处理和分析3D点云数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI小笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值