Azure Kinect DK点云实时可视化及图像点云按键交互存储(Open3D)

本文介绍了如何使用Open3D库在Python环境下开发AzureKinectDK,包括设置参数、设备连接、点云实时显示、图像和点云的按键交互存储。代码示例包括了对官方代码的解读,以及如何通过键盘事件实现保存RGB图像、深度图像和点云数据。此外,还提到了一个基于pyKinectAzure库的修改版,用于增强实时点云显示和交互功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  Azure Kinect DK在python上的使用仍然很空白,开篇blog记录一下利用Open3D开发Kinect DK的笔记,内含利用Open3D对Azure Kinect DK相机读取的信息进行点云实时可视化及图像点云按键交互存储。

  对官方的代码做些解读:

可视化:azure_kinect_viewer.py

main函数

import argparse
import open3d as o3d
if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='Azure kinect mkv recorder.')
    parser.add_argument('--config', type=str, help='input json kinect config')
    parser.add_argument('--list',
                        action='store_true',
                        help='list available azure kinect sensors')
    parser.add_argument('--device',
                        type=int,
                        default=0,
                        help='input kinect device id')
    parser.add_argument('-a',
                        '--align_depth_to_color',
                        action='store_true',
                        help='enable align depth image to color')
    args = parser.parse_args()

    if args.list:
        o3d.io.AzureKinectSensor.list_devices()
        exit()

    if args.config is not None:
        config = o3d.io.read_azure_kinect_sensor_config(args.config)
    else:
        config = o3d.io.AzureKinectSensorConfig()

    device = args.device
    if device < 0 or device > 255:
        print('Unsupported device id, fall back to 0')
        device = 0

    v = ViewerWithCallback(config, device, args.align_depth_to_color)
    v.run()

  代码首先是对argparse 模块的设置,argparse 模块可参考这篇文章:《argparse 模块详解》
  主要有以下四个参数:

  • config: 配置文件。自行配置config可参考该链接调整参数:Enumerations
  • list: 判断是否有设备连接。
  • device: 设备号,默认为0。
  • align_depth_to_color: 对齐深度至颜色(默认不对齐,命令行加-a开启),一般深度图像的范围比较大,采用对齐深度至颜色后将RGB图片区域对应的深度图像裁剪对齐。

视频读取显示类ViewerWithCallback(添加了存储RGB图像和深度图像的回调函数)

class ViewerWithCallback:

    def __init__(self, config, device, align_depth_to_color):
        self.flag_exit = False
        self.align_depth_to_color = align_depth_to_color

        self.sensor = o3d.io.AzureKinectSensor(config) # 配置相机参数
        if not self.sensor.connect(device):
            raise RuntimeError('Failed to connect to sensor')

    def escape_callback(self, vis):
        self.flag_exit = True
        return False
    
    def save_callback(self, vis): # 提取RGB图像和深度图像并保存,按's'键保存
        num = np.random.randint(100)
        o3d.io.write_image('color'+st
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

a_struggler

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

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

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

打赏作者

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

抵扣说明:

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

余额充值