Open3d学习计划——13(Azure Kinect)

Open3d学习计划——13(Azure Kinect)

欢迎大家关注“点云PCL”公众号,进入群聊一起学习。
这一篇因为没有相机,所以并没有尝试过.有条件的小伙伴尝试过以后欢迎分享.

注意:Azure Kinect只支持在Windows和Ubuntu 18.04下使用.

安装

安装Azure Kinect SDK

从这篇指南中下载Azure Kinect SDK(K4A).
在Ubuntu中,你将要设置udev规则去使用不带sudo的Kinect相机,请参考以下指南.
安装以后,你需要在Linux的窗口运行 k4aviewer 或者在Windows上运行 k4aviewer.exe 来确保设备工作.
当前Open3d支持的 Azure Kinect SDK 版本为v1.2.0,不过未来的版本也可能兼容.
如果你使用的是Ubuntu 16.04,Azure Kinect SDK是不受官方支持的,我们需要一个非官方的解决方案,参考如下: Unofficial Ubuntu 16.04 workaround.(后面会有介绍)

从PIp或者Conda安装使用Open3d

如果你是从Pip或者Conda安装的Open3d,那么通过推荐的方式在系统中安装K4A,Open3d的Azure Kinect功能是可以直接使用的.当Open3d使用K4A相关的功能时,将会自动加载K4A的动态链接库.
在Ubuntu,默认的搜索路径遵循Linux的惯例.
在Windows,Open3d将从默认的安装路径加载共享库.举个例子,对于v1.2.0版本的K4A,默认的安装路径是 C:\Program Files\Azure Kinect SDK v1.2.0 .如果这个不起作用,复制 depthengine_x_x.dll, k4a.dll 和 k4arecord.dll文件到Open3d Python模块安装的路径(如果你用的Python),或者到你的C++可执行文件相同的目录.
你能够通过下面的方式得到Open3d的Python模块路径:

python -c "import open3d as o3d; import os; print(os.path.dirname(o3d.__file__))"

从源码构建

想要从源码构建支持K4A的Open3d,需要在CMake设置的时候设置
BUILD_AZURE_KINECT=ON.

cmake -DBUILD_AZURE_KINECT=ON -DOTHER_FLAGS ..

Open3D Azure Kinect Viewer

使用Open3D Azure Kinect Viewer来预览Azure Kinect相机捕获到的深度和RGB图像.
Open3D 提供了Azure Kinect Viewer的Python和C++例程代码.请在
examples/Cpp/AzureKinectViewer.cppexamples/Python/ReconstructionSystem/sensors/azure_kinect_viewer.py 中查看更多细节.
我们将使用Python版本作为例程.

python examples/Python/ReconstructionSystem/sensors/azure_kinect_viewer.py --align_depth_to_color

在这里插入图片描述
当使用高帧数,高分辨率进行记录时,可以使用未经变换的原始深度图像来减少计算.

python examples/Python/ReconstructionSystem/sensors/azure_kinect_viewer.py

在这里插入图片描述
当可视化窗口工作时,可以使用ESC来退出.
也可以使用Json文件来配置传感器.

python examples/Python/ReconstructionSystem/sensors/azure_kinect_viewer.py --config config.json

这个传感器的配置如下.完整的配置列表请参阅这里.

{
    "camera_fps" : "K4A_FRAMES_PER_SECOND_30",
    "color_format" : "K4A_IMAGE_FORMAT_COLOR_MJPG",
    "color_resolution" : "K4A_COLOR_RESOLUTION_720P",
    "depth_delay_off_color_usec" : "0",
    "depth_mode" : "K4A_DEPTH_MODE_WFOV_2X2BINNED",
    "disable_streaming_indicator" : "false",
    "subordinate_delay_off_master_usec" : "0",
    "synchronized_images_only" : "false",
    "wired_sync_mode" : "K4A_WIRED_SYNC_MODE_STANDALONE"
}

Open3D Azure Kinect记录器

使用Open3D Azure Kinect Viewer记录RGB和深度图像流到MKV文件.
Open3D 提供了Azure Kinect Viewer的Python和C++例程代码.请在
examples/Cpp/AzureKinectRecord.cppexamples/Python/ReconstructionSystem/sensors/azure_kinect_recorder.py
Python版本的使用例程如下:

python examples/Python/ReconstructionSystem/sensors/azure_kinect_recorder.py --output record.mkv

当运行记录器脚本时,可以任意修改相机配置.
当可视化窗口工作时,按 空格键 开始或者暂停记录.按ESC可以退出记录.
在这里插入图片描述

Open3D Azure Kinect MKV文件读取

记录的MKV文件使用K4A的自定义格式,里面包含了RGB和深度图像.常规的视频播放器可能只支持播放彩色图像或者不支持所有格式,要想查看自定义的MKV文件,请使用Open3D Azure Kinect MKV Reader.
Open3D 提供了Open3D Azure Kinect MKV Reader 的 Python 和 C++ 的使用例程代码,. 请查看 examples/Cpp/AzureKinectMKVReader.cppexamples/Python/ReconstructionSystem/sensors/azure_kinect_mkv_reader.py .
Python版本使用:

python examples/Python/ReconstructionSystem/sensors/azure_kinect_mkv_reader.py --input record.mkv

在这里插入图片描述
需要注意的时,尽管记录的时候记录的是未对齐的原始深度图像,阅读器依然能够将深度图与彩色图像对齐.
要将MKV 视频转换为深度图和彩色图的图像帧时,请指定 --output 标志.

python examples/Python/ReconstructionSystem/sensors/azure_kinect_mkv_reader.py --input record.mkv --output frames

在这里插入图片描述

非官方的Ubuntu 16.04工作环境

Azure Kinect SDK并没有提供Ubuntu 16.04的官方版本,在这里我们给出非官方提供的例程.

使用Open3d Python包

对于Python版本的Open3d,运行

pip install open3d_azure_kinect_ubuntu1604_fix

open3d_azure_kinect_ubuntu1604_fix包包含四个共享库

  • libstdc++.so:从Ubuntu 18.04复制,libdepthengine.so需要.
  • libdepthengine.so:从K4A的Ubuntu 18.04版本拷过来的.
  • libk4a.so:在Ubuntu 16.04上从源码构建的.
  • libk4arecord.so:在Ubuntu 16.04上从源码构建的.
    open3d_azure_kinect_ubuntu1604_fix将会预加载共享库并设置LD_LIBRARY_PATH,之后当编译模块加载Kinect库时,dlopen会使用他们.
    当安装完open3d_azure_kinect_ubuntu1604_fix后,使用import open3d导入Open3d时,Open3d将会在初始化阶段试图加载共享库.

从源码构建Open3d

首先,下载open3d_azure_kinect_ubuntu1604_fix包到你的Python环境.这个包包含编译Azure Kinect支持版本的Open3d的所要的头文件.

从源码构建Open3d时,在CMake配置阶段设置-DBUILD_AZURE_KINECT=ON.CMake将会使用当前路径中可用的Python可执行文件去检测open3d_azure_kinect_ubuntu1604_fix包的位置.因此在运行CMake时,请确保启用的Python环境是open3d_azure_kinect_ubuntu1604_fix包所在的环境.

如果是构建C++二进制文件,依然要确保在运行时LD_LIBRARY_PATH包含 libstdc++.so 和libdepthengine.so 目录.如果你构建已经编译的Open3d Python模块,Open3d的 init.py文件将会试图导入open3d_azure_kinect_ubuntu1604_fix,为了自动追加 LD_LIBRARY_PATH.

关于翻译大家有更好的意见欢迎评论一起学习!!!

欢迎大家加入知识星球一起学习。

在这里插入图片描述

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Azure Kinect DK与OpenCV可以结合使用来进行计算机视觉相关的任务。虽然Azure Kinect DK在Python上的使用相对较少,但是可以通过一些第三方库来实现与OpenCV的集成。例如,可以使用pyKinectAzure库来访问Azure Kinect DK的相机数据,并将其与OpenCV一起使用。pyKinectAzure库提供了各种Kinect点云和图像显示的例程,可以通过GitHub链接https://github.com/ibaiGorordo/pyKinectAzure进行获取。另外,还可以使用Open3D库来读取Azure Kinect DK相机的信息,并进行点云实时可视化和图像点云的交互存储。可以参考一些开篇blog记录,如https://github.com/luckyluckydadada/Azure-Kinect-DK-3D-reconstruction,其中提供了使用Open3D进行Azure Kinect DK的3D重建的示例代码。综上所述,通过使用这些库,可以实现Azure Kinect DK与OpenCV的结合使用,以进行计算机视觉相关的任务。 #### 引用[.reference_title] - *1* *2* [Azure Kinect DK点云实时可视化及图像点云按键交互存储(Open3D)](https://blog.csdn.net/astruggler/article/details/128499968)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Azure Kinect DK 实现三维重建 (PC非实时版)](https://blog.csdn.net/weixin_41965898/article/details/116698932)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值