起因

MMDetection3D可视化使用Open3D写的,它每显示一帧数据,都要重新关闭上一帧图形窗口,当前帧再重新生成一个,非常慢,严重影响浏览dataset的效率。

再加上自己有浏览一个文件夹下多个点云的需求,所以学习了下Open3D的官方文档,打算自己实现试一下。

功能很简单,就是逐帧显示一个文件夹下的所有点云,用按键控制切换上一帧和下一帧。

这个例子来源于Open3D官方Visualization教程中的Non-blocking visualization,同时又参考了

https://github.com/isl-org/Open3D/issues/715和https://stackoverflow.com/questions/65112433/open3d-how-to-update-point-cloud-during-window-running。

本来觉得应该会挺快,结果遇到了两个大坑。

  1. 官方给的例子中,用的是vis.update_geometry(pcd),亲测不行,点云不刷新,要用vis.add_geometry(pcd),这个地方坑了我了好久;
  2. register_key_callback(key, key_callback_function)中的key,必须是大写的,小写的按键callback按下收不到。

代码如下:

def show_pointcloud_dir(file_path):g_idx = 0vis = o3d.visualization.VisualizerWithKeyCallback()filelist = [os.path.join(file_path, f) for f in os.listdir(file_path)]def show_pointcloud(vis):nonlocal g_idxpoints = np.fromfile(filelist[g_idx], np.float32).reshape(-1, 4) # xyzipcd = o3d.geometry.PointCloud()pcd.points = o3d.utility.Vector3dVector(points[:, :3])# point_color = (0.5, 0.5, 0.5)# points_colors = np.tile(np.array(point_color), (points.shape[0], 1))# pcd.colors = o3d.utility.Vector3dVector(points_colors)vis.clear_geometries()vis.add_geometry(pcd) # fuck bug, vis.update_geometry(pcd)没有用!vis.update_renderer()vis.poll_events()def key_forward_callback(vis):nonlocal g_idxg_idx += 1if g_idx >= len(filelist):g_idx = len(filelist) - 1show_pointcloud(vis)return Truedef key_back_callback(vis):nonlocal g_idxg_idx -= 1if g_idx < 0:g_idx = 0show_pointcloud(vis)return Truevis.create_window()vis.get_render_option().point_size = 2  # set points sizevis.register_key_callback(ord(' '), key_forward_callback)  # spacevis.register_key_callback(ord('B'), key_back_callback)  # fuck bug, 字母必须是大写!vis.run()if __name__ == "__main__":show_pointcloud_dir('pointcloud_path')

一个有用的tip

显示出点云后,按h键后在命令行会打印出各种操作提示,其中按下0,1,2,3,4可以根据xyz改变点云颜色,挺有用的。

其他两个相关工具

Web visualizer and Jupyter

通过浏览器远程看dataset也很有用。

Open3D-ML

这是个专门用于机器学习的库,demo非常炫酷,用到自己dataset上应该很有用。

共勉!

Open3D键盘切换上下帧显示点云相关推荐

  1. Python: 用open3D库,连续多帧显示点云(查看localization pose的好坏)

    连续多帧显示点云,需要 点云文件 和 定位信息(IMU惯导信息),我这里是从bag包里面自己解析出来的定位信息,因为是自己写的节点,所以直接从代码里面跑出来的,不是ros官方定义的,所以没有用官方给出 ...

  2. Android键盘切换闪动原理及解决方案

    Android键盘切换闪动原理及解决方案 主要内容 键盘切换闪动原理 键盘切换闪动解决方案 设置键盘softInputMode使用adjustPan,增加一个与键盘同高的支撑视图(不推荐) 设置键盘s ...

  3. PCL:PCL可视化显示点云

    (1):引用:仅仅是简单的显示点云,可以使用CloudViewer类.这个类非常简单易用.但要注意,它不是线程安全的.如果要用于多线程,还要参考PCLVisualizer. 需要注意的是,PointC ...

  4. 为什么会显示贵州云服务器,为什么云服务器都放在贵州

    为什么云服务器都放在贵州 内容精选 换一换 在弹性公网IP资源不足的情况下,用户通过管理控制台创建一台绑定弹性公网IP的弹性云服务器,此时弹性云服务器创建成功,但是绑定弹性公网IP失败.这种情况下,弹 ...

  5. 51单片机红外电子密码锁【红外对管矩阵键盘数码管LCD1602显示模块】

    系统功能 51单片机红外电子密码锁系统主要由红外线编码电路.红外线解码开锁电路.掉电保护电路.声光提示报警电路.键盘及显示电路等组成,编写相应的程序代码并进行结果测试和仿真演示. 利用红外遥控技术和单 ...

  6. 迷你服务器开机无显示,迷你云服务器突然消失

    迷你云服务器突然消失 内容精选 换一换 在弹性公网IP资源不足的情况下,用户通过管理控制台创建一台绑定弹性公网IP的弹性云服务器,此时弹性云服务器创建成功,但是绑定弹性公网IP失败.这种情况下,弹性云 ...

  7. QT界面中实现视频帧显示的多种方法及应用

    QT界面中实现视频帧显示的多种方法及应用 (一) 引言 1.1 视频帧在QT界面中的应用场景 1.2 不同方法的性能和适用性分析 1.2.1 使用QLabel和QPixmap 1.2.2 使用QPai ...

  8. android 表情键盘切换,Android仿微信键盘切换效果

    Android 仿微信的键盘切换(录音,表情,文字,其他),IM通讯,类似朋友圈只要涉及到文字等相关的app都会要涉及到键盘的处理,今天就给大家分享一下Android 仿微信的键盘切换. 效果图如下: ...

  9. 51单片机LED点阵屏逐帧显示和流动显示图像

    上一篇逐帧显示用的是定时和中断控制,碰到了一些麻烦,我觉得也是一种不错的办法,因为Delay的时间更短,而且如果不那么介意亮度的情况甚至可以不用Delay()函数,这里采用将要显示的图像按顺序存储在数 ...

最新文章

  1. ADS 2013安装教程
  2. 一个图片展示效果的站点
  3. 【渝粤教育】国家开放大学2019年春季 0233-22T学前儿童语言教育 参考试题
  4. Python工作笔记-仿大佬的list赋值
  5. 四.树莓派更改输入法与支持中文
  6. 《重大技术需求征集系统》项目目标文档
  7. python画图颜色代码rgb_python – matplotlib 3D散点图,其标记颜色对应于RGB值
  8. mysql维护分区脚本_MySQL 分区表脚本
  9. 360网络修复大师_360补丁大师免安装下载-360补丁大师下载 v8.0 官方最新版
  10. Eplan2.7 安装教程
  11. C++写的12306抢票软件
  12. sqlplus 命令登录 Oracle
  13. 怎么自己制作返利机器人教程分享
  14. 使用微信开发工具开发微信小程序(二)——协同工作、发布与事件绑定
  15. 夯实数据库根科技,提升企业数智化转型的“人效”和“能效” | 数据猿
  16. 谷歌浏览器不支持ocx控件
  17. 京东到家机器学习平台建设
  18. IDEA快速移动光标到行首或行尾;
  19. ipa在线安装搭建_iOS12.4.1 越狱无法安装?教你百分百安装
  20. 18 款低代码平台!开发解放双手

热门文章

  1. c语言尾插法步骤,C语言尾插法链表
  2. Java“彭于晏,kafka教程
  3. leetcode 回溯算法 17. 电话号码的字母组合
  4. 7款短视频创作必备软件分享,在家用手机就能做,每月收益4千+
  5. 卡片IOT板开发计划
  6. 计算机二级access分数分布_计算机二级access评分标准
  7. 计算机网络 - 练习(二百三十三)
  8. 金融行业需要什么样的数据库?
  9. 计算机配件价格报告,2021年电脑配件行业趋势_2021年电脑配件行业趋势报告_中国报告大厅...
  10. 破解网络尖兵(真正对付限制ADSL路由共享的方法)