由于项目需要,使用了Azure Kinect DK的深度相机设备,由于内含人体姿态检测的SDK,所以拿来玩一玩
设备文档介绍:https://docs.microsoft.com/zh-cn/azure/Kinect-dk/set-up-azure-kinect-dk
一、设备连接
硬件部分的连接示意图如下:
1、将电源连接器插入设备背面的电源插孔。 将 USB 电源适配器连接到线缆的另一端,然后将适配器插入电源插座;
2、将 USB 数据线的一端连接到设备,将另一端连接到电脑上的 USB 3.0 端口(这里我遇到一些问题,驱动始终无法识别,经过查找网上经验吗,将其连接到距离主板最近的那个USB口,才可以连接成功)
3、验证电源指示器 LED(USB 电缆旁边)是否为纯白。
4、系统要求:官网中的系统要求是Windows10或者ubuntu18.04的操作系统
网上的经验说Ubuntu16.04也可以,不过我直接用了win10的系统。
二、下载SDK
SDK下载地址:https://docs.microsoft.com/zh-cn/azure/Kinect-dk/sensor-sdk-download
也可以在GitHub源码中找到其他版本下载
源码:https://github.com/microsoft/Azure-Kinect-Sensor-SDK
SDK版本:https://github.com/microsoft/Azure-Kinect-Sensor-SDK/blob/develop/docs/usage.md
三、检查设备连接成功
启动 Azure Kinect 查看器:双击文件中的执行文件 C:\Program Files\Azure Kinect SDK vX.Y.Z\tools\k4aviewer.exe
,其中的 X.Y.Z
是安装的 SDK版本,可以看到如下图:
这里会自动搜索到相机,如果没搜索到,说明驱动安装失败,还是要连接到距离主板最近的那个USB口,并且USB口需要时USB3.0版本,选择相机的配置选项后,点击start就可以看到效果:
进入 C:\Program Files\Azure Kinect Body Tracking SDK\tools\文件夹中,有一个k4abt_simple_3d_viewer可执行文件,可以在Powershell中运行。命令是:./k4abt_simple_3d_viewer.exe CPU,如果没有使用CUDA,可在后面加CPU,表示用CPU运行
四、SDK的使用
相机函数调用:https://docs.microsoft.com/zh-cn/azure/Kinect-dk/build-first-app
人体姿态识别函数调用:https://docs.microsoft.com/zh-cn/azure/Kinect-dk/build-first-body-app
安装opencv3
下载VS2019 ,并新建一个C++ windows 控制台的项目,然后需要拷贝一些SDK内容以及相关库过来:
- 将Azure Kinect SDK v1.3.0\sdk\include\中的k4a.h、k4a.hpp、k4a_export.h、k4atypes.h、k4aversion.h拷贝到项目文件夹下的include文件夹下
- 将Azure Kinect Body Tracking SDK\sdk\include中的k4abt.h、k4abt.hpp、k4abttypes.h、k4abtversion.h拷贝到项目文件夹下的include文件夹下
- 将opencv\build\include\opencv2中的core.hpp、opencv.hpp、opencv_modules.hpp拷贝到项目文件夹下的include文件夹下
- 将opencv\build\include\opencv2文件夹直接拷贝到项目wen'文件夹下
- 将Azure Kinect SDK v1.3.0\tools文件夹下的depthengine_2_0.dll、k4a.dll拷贝到项目文件夹下
- 将Azure Kinect Body Tracking SDK\tools文件夹下的cublas64_100.dll、cudart64_100.dll、cudnn64_7.dll、dnn_model_2_0.onnx拷贝到项目文件夹下
接下来就可以写自己的主函数了
k4abttypes.h的函数中设置使用CPU还是GPUwo'd
typedef enum
{
K4ABT_TRACKER_PROCESSING_MODE_GPU = 0, /**< SDK will use GPU mode to run the tracker */
K4ABT_TRACKER_PROCESSING_MODE_CPU, /**< SDK will use CPU only mode to run the tracker */
} k4abt_tracker_processing_mode_t;
我的主程序,主要是展示关节点坐标,及一些关键点的关系
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include "include/k4a.h"
#include "include/k4abt.h"
#include <math.h>
// OpenCV
#include "include/opencv.hpp"
// Kinect DK
#include "include/k4a.hpp