Azure Kinect 使用记录 (一)
20211111 - 占坑
20211115 - 添加vs编译内容
20220311 - k4abt_simple_3d_viewer 突然用不了了
因项目需要,得用Azure Kinect以及它的SDK进行开发,在这里记录下心得体会,不定时更新
一、骨架跟踪示例程序
1.0 k4abt_simple_3d_viewer 闪退
之前用着还好好的,突然就用不了了,表现情况是,双击k4abt_simple_3d_viewer.exe
,出现黑色的命令框和一个白色的3D Visualizer
的框,然后就直接闪退,没有任何报错信息。翻了各种issue后发现,是显卡的驱动有问题!!!这里给出原文链接 => #1696
I can confirm that in most cases the reason for k4abt_simple_3d_viewer crashing is the NVIDIA driver version.
NVIDIA drivers after version:
472.12 for Game Ready drivers
and
472.84 for Studio drivers
have some problems with OpenGL. If anyone else has a similar problem please install above mentioned drivers.
显卡降级到指定版本就可以了。基本上就是472.12
这个版本。
这里我就跳过Azure Kinect SDK v1.4.1
和Azure Kinect Body Tracking SDK
的安装步骤了,你可以看到当前我安装的sdk版本是1.4.1
,推荐安装到默认路径C:\Program Files\
,有人提到安装到其他路径出现bug的情况。
1.1 ONNXRUNTIME ERROR
在Azure Kinect Body Tracking SDK\tools
中执行k4abt_simple_3d_viewer.exe
大概会出现
Find onnxruntime.dll at xxx but it doesn't load correctly!
有可能是因为onnxruntime依赖的MSVC的dll版本过旧导致的,github issue #1625提供了解决方案:下载Microsoft Visual C++ Redistributable for Visual Studio 2015, 2017 and 2019即可,这里提供链接,点我,x86和x64都下载安装即可。
可以看到产生骨架的fov为深度相机的fov,当手部超出深度相机fov外,手部骨架无法跟踪。示例模型或许包含骨架的kinematic先验。
1.2 VS编译
这里分为“kinect sdk的调用”,以及“body tracking sdk的调用“,这两部分,我也不知道为啥巨硬工程师要弄两个sdk,有可能是body tracking sdk有部分依赖了外部程序(onnx、tensorrt、cuda等等),不整洁优美了,我猜。
1.2.1 Kinect SDK
首先,”将 Azure Kinect 库添加到 Visual Studio 项目“,参考:链接点我,中文也解释得很清楚。
按图索骥安装即可。
1.2.3 Body Tracking SDK
这里难度就提升了。根据"快速入门:生成 Azure Kinect 人体跟踪应用程序",需要将依赖的头文件和库配置到vs中。我这里写的都是默认安装路径。
- 头文件路径
C:\Program Files\Azure Kinect Body Tracking SDK\sdk\include
- 依赖库路径
C:\Program Files\Azure Kinect Body Tracking SDK\sdk\windows-desktop\amd64\release\lib
C:\Program Files\Azure Kinect SDK v1.4.1\sdk\windows-desktop\amd64\release\lib
- 依赖库
- k4a.lib,这是kinect sdk核心
- k4abt.lib,这是body tracking sdk核心
以及C:\Program Files\Azure Kinect Body Tracking SDK\tools
里面的dll和onnx,后续有用。
同样如图所示配置即可。
然后,一定要记得,将之前提到的dll和onnx全部拷到执行目录中,否则会出现下面类似的bug,在k4abt_tracker_create
时抛出。
Unhandled exception at 0x00007FF980A99319 (KernelBase.dll) in Project1.exe: 0xC06D007F: Procedure not found (parameters: 0x000000D76BCFEB80).
除了拷贝外,还没想到解决办法。
然后执行,可以看到示例程序正常输出。更进阶点的异步、同步的玩法,待我再多研究几日。文章来源:https://www.toymoban.com/news/detail-459454.html
二、Unity混合
未完待续文章来源地址https://www.toymoban.com/news/detail-459454.html
到了这里,关于Azure Kinect 使用记录 (一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!