You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于OpenPCDet实现.bin格式激光点云的连续检测与可视化?

解决OpenPCDet自动连续检测激光点云并展示的方法

1. 修改可视化逻辑,取消窗口阻塞

问题根源在于Open3D默认的draw_geometries()是阻塞式调用,必须手动关闭窗口才会执行后续代码。需要替换为非阻塞的可视化流程:

找到demo.py中负责可视化的代码段(通常在visualize_results函数内),将原阻塞代码:

o3d.visualization.draw_geometries([points_obj, boxes_obj])

替换为以下自动关闭的非阻塞代码:

import open3d as o3d
import time

# 创建可视化窗口并添加元素
vis = o3d.visualization.Visualizer()
vis.create_window()
vis.add_geometry(points_obj)
vis.add_geometry(boxes_obj)

# 更新渲染并展示指定时长
vis.update_renderer()
vis.poll_events()
time.sleep(0.3)  # 可根据需求调整展示时长,单位秒

# 自动关闭窗口
vis.destroy_window()

2. 批量遍历所有.bin文件

修改demo.py的主逻辑,让脚本自动遍历目标目录下的所有点云文件:

import os
import glob
import numpy as np

# 指定点云文件目录
velodyne_dir = "../velodyne/"
# 按编号顺序获取所有.bin文件
bin_files = sorted(glob.glob(os.path.join(velodyne_dir, "*.bin")))

# 遍历执行检测与可视化
for bin_file in bin_files:
    # 加载点云数据
    points = np.fromfile(bin_file, dtype=np.float32).reshape(-1, 4)
    # 执行模型检测
    pred_dicts, _ = model.forward([points])
    # 调用修改后的可视化函数展示结果
    visualize_results(points, pred_dicts)

如果原脚本支持通过--data_path指定目录,也可以保留参数逻辑,判断传入路径为目录时自动遍历所有文件。

3. 运行修改后的脚本

完成代码修改后,执行以下命令即可自动连续检测所有点云:

python demo.py --cfg_file cfgs/kitti_models/pointrcnn.yaml --ckpt ../OpenPCDet/stev_models/pointrcnn_7870.pth

脚本会按编号顺序加载每个.bin文件,自动完成检测、展示(指定时长后自动关闭窗口),实现类似视频的连续展示效果。

内容的提问来源于stack exchange,提问作者סטיבן

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 06:45:31