参考官网教程:https://docs.microsoft.com/zh-cn/azure/kinect-dk/body-sdk-setup
https://docs.microsoft.com/zh-cn/azure/kinect-dk/build-first-body-app
使用环境:Azure Kinect SDK v1.4.1 + Azure Kinect Body Tracking SDK 1.0.1 + VS2019

文章目录

  • 一、设置人体跟踪SDK
    • 1. 官网下载SDK并安装
    • 2. 验证人体跟踪
  • 二、生成第一个人体跟踪应用程序
    • 1. 项目配置
      • 1.1 新建空白工程并配置文件
      • 1.2 安装 Azure Kinect NuGet 包
      • 1.3 添加头文件和库文件
    • 2. 完整源代码
    • 3. 结果展示

一、设置人体跟踪SDK

1. 官网下载SDK并安装

下载地址为https://docs.microsoft.com/zh-cn/azure/kinect-dk/body-sdk-download,选择1.0.1版本即可,下载好后可以默认安装,也可以自定义安装路径。(我是自定义路径)

注:我开始安装的1.1.0版本,后来运行过程中始终出错,后来使用1.0.1版本运行正常,出错原因未知。

2. 验证人体跟踪

  • 可以在 开始菜单 或 (SDK Installation Path)\tools\k4abt_simple_3d_viewer.exe 中找到它双击运行。
  • 如果没有足够强大的 GPU 但仍想测试结果,可以通过以下命令在命令行中启动 Azure Kinect 人体跟踪查看器:(SDK Installation Path)\tools\k4abt_simple_3d_viewer.exe

出现以下窗口,则说明安装正确。

二、生成第一个人体跟踪应用程序

1. 项目配置

过程和上节内容类似,未详细说明就是与上节完全相同。

1.1 新建空白工程并配置文件

1.2 安装 Azure Kinect NuGet 包

1.3 添加头文件和库文件

  1. 加入头文件k4a.h和k4abt.h
  2. 配置头文件目录和库文件目录
    2.1 C/C++ - 常规 - 附加包含目录,加入传感器 SDK 和人体跟踪 SDK 的include路径

    2.2 链接器 - 常规 - 附加库目录,加入传感器 SDK 和人体跟踪 SDK 的lib路径

    2.3 链接器 - 输入 - 附加依赖项,加入k4a.lib和k4abt.lib

    注意:每添加一项后,点击右下角应用。

2. 完整源代码

代码用于检测镜头中人数。

#include <stdio.h>
#include <stdlib.h>#include <k4a/k4a.h>
#include <k4abt.h>#define VERIFY(result, error)                                                                            \if(result != K4A_RESULT_SUCCEEDED)                                                                   \{                                                                                                    \printf("%s \n - (File: %s, Function: %s, Line: %d)\n", error, __FILE__, __FUNCTION__, __LINE__); \exit(1);                                                                                         \}                                                                                                    \

int main()
{k4a_device_t device = NULL;VERIFY(k4a_device_open(0, &device), "Open K4A Device failed!");// Start camera. Make sure depth camera is enabled.k4a_device_configuration_t deviceConfig = K4A_DEVICE_CONFIG_INIT_DISABLE_ALL;deviceConfig.depth_mode = K4A_DEPTH_MODE_NFOV_UNBINNED;deviceConfig.color_resolution = K4A_COLOR_RESOLUTION_OFF;VERIFY(k4a_device_start_cameras(device, &deviceConfig), "Start K4A cameras failed!");k4a_calibration_t sensor_calibration;VERIFY(k4a_device_get_calibration(device, deviceConfig.depth_mode, deviceConfig.color_resolution, &sensor_calibration),"Get depth camera calibration failed!");k4abt_tracker_t tracker = NULL;k4abt_tracker_configuration_t tracker_config = K4ABT_TRACKER_CONFIG_DEFAULT;VERIFY(k4abt_tracker_create(&sensor_calibration, tracker_config, &tracker), "Body tracker initialization failed!");int frame_count = 0;do{k4a_capture_t sensor_capture;k4a_wait_result_t get_capture_result = k4a_device_get_capture(device, &sensor_capture, K4A_WAIT_INFINITE);if (get_capture_result == K4A_WAIT_RESULT_SUCCEEDED){frame_count++;k4a_wait_result_t queue_capture_result = k4abt_tracker_enqueue_capture(tracker, sensor_capture, K4A_WAIT_INFINITE);k4a_capture_release(sensor_capture); // Remember to release the sensor capture once you finish using itif (queue_capture_result == K4A_WAIT_RESULT_TIMEOUT){// It should never hit timeout when K4A_WAIT_INFINITE is set.printf("Error! Add capture to tracker process queue timeout!\n");break;}else if (queue_capture_result == K4A_WAIT_RESULT_FAILED){printf("Error! Add capture to tracker process queue failed!\n");break;}k4abt_frame_t body_frame = NULL;k4a_wait_result_t pop_frame_result = k4abt_tracker_pop_result(tracker, &body_frame, K4A_WAIT_INFINITE);if (pop_frame_result == K4A_WAIT_RESULT_SUCCEEDED){// Successfully popped the body tracking result. Start your processingsize_t num_bodies = k4abt_frame_get_num_bodies(body_frame);printf("%zu bodies are detected!\n", num_bodies);k4abt_frame_release(body_frame); // Remember to release the body frame once you finish using it}else if (pop_frame_result == K4A_WAIT_RESULT_TIMEOUT){//  It should never hit timeout when K4A_WAIT_INFINITE is set.printf("Error! Pop body frame result timeout!\n");break;}else{printf("Pop body frame result failed!\n");break;}}else if (get_capture_result == K4A_WAIT_RESULT_TIMEOUT){// It should never hit time out when K4A_WAIT_INFINITE is set.printf("Error! Get depth frame time out!\n");break;}else{printf("Get depth capture returned error: %d\n", get_capture_result);break;}} while (frame_count < 100);printf("Finished body tracking processing!\n");k4abt_tracker_shutdown(tracker);k4abt_tracker_destroy(tracker);k4a_device_stop_cameras(device);k4a_device_close(device);return 0;
}

3. 结果展示


出现如图所示窗口,则说明运行成功。

Kinect Azure DK入门学习(三)——设置人体跟踪SDK + 生成第一个人体跟踪应用程序相关推荐

  1. OpenGL入门学习[三]

    OpenGL入门学习[三] http://xiaxveliang.blog.163.com/blog/static/2970803420126246501930/ OpenGL入门学习[十一] 我们在 ...

  2. Redis6入门学习(三)--Redis_Jedis、事务、LUA脚本

    title: Redis6入门学习(三) 文章目录 title: Redis6入门学习(三) **Redis_Jedis_测试** **Jedis所需要的jar包** **连接Redis注意事项** ...

  3. Azure Kinect DK入门学习(一)设置Azure Kinect DK

    环境安装 windows10+显卡驱动+vs2019+Azure Kinect DK+人体跟踪SDK 官方提供的是vs2015 附官方说明文档:官方教程 设置Azure Kinect DK 下载相关S ...

  4. Azure机器学习入门(三)创建Azure机器学习实验

    在此动手实践中,我们将在Azure机器学习Studio中一步步地开发预测分析模型,首先我们从UCI机器学习库的链接下载普查收入数据集的样本并开始动手实践: http://archive.ics.uci ...

  5. Kinect Azure DK获取深度图、深度数据和人体骨骼关键点三维坐标

    使用环境:Azure Kinect SDK v1.4.1 + Azure Kinect Body Tracking SDK 1.0.1 + VS2019 + Opencv 文章目录 一.获取深度图 二 ...

  6. 楷书书法规则_硬笔书法入门学习“三步法”,让练字不再难

    生活中,常常有人肯于吃苦,坚持经常练习硬笔书法,但却进步不大,收获甚微.因此,凡有志学好硬笔书法的人,必须掌握一些学习硬笔书法的方法.硬笔书法学习的方法可以采用"三步法". 一.规 ...

  7. Linux驱动入门学习(三):I2C架构全面理解

    I2C 概述 I2C是philips提出的外设总线. I2C只有两条线,一条串行数据线:SDA,一条是时钟线SCL ,使用SCL,SDA这两根信号线就实现了设备之间的数据交互,它方便了工程师的布线. ...

  8. ROS入门学习三——launch文件

    launch作用:便于一次启动多个节点,可启动本地节点和远程节点及修改添加参数服务器参数. <launch> //<launch>是所有launch文件的根标签<node ...

  9. MongoDB入门学习(三):MongoDB的增删查改

    对于我们这样的菜鸟来说,最重要的不是数据库的管理,也不是数据库的性能,更不是数据库的扩展,而是怎么用好这款数据库,也就是一个数据库提供的最核心的功能,增删查改. 由于MongoDB存储数据都是以文档的 ...

最新文章

  1. “考研3次,读博7年,英语极烂”,他却做出诺奖级成果
  2. jQuery 之正则表达式篇
  3. 多态指针访问虚函数不能被继承的类快速排序N皇后问题插入排序堆排序merge归并排序栈上生成对象两个栈实现一个队列...
  4. 前序中序确认二叉树 7-23 还原二叉树(25 分)
  5. C语言初始化错误怎么办,结构体变量的初始化错误
  6. 智能推荐:“相关性搜索”只给你最想要的
  7. Hbuilder常用快捷键功能.html
  8. 培训机构还能不能信任?
  9. Bootstrap 排版和链接
  10. python中 if __name__ == ‘__main__‘
  11. 谷歌推出 Kotlin 免费在线课程
  12. java 分库关联查询工具类
  13. Algorithm:贪心策略之区间覆盖问题
  14. sql exists和not exists用法
  15. centos7 查看oracle运行日志_Linux(CentOS7)部署系列---常规应用部署方案
  16. 数据库中多对多的关系设计
  17. [Android][Android Studio] Gradle项目中添加JNI生成文件(.so文件)
  18. 打印准考证服务器异常显示,2020准考证打印30个常见问题汇总及解决办法
  19. 利用Hownet进行语义相似度计算的类(
  20. DDos防护系列之2--DDos防御策略

热门文章

  1. PHP中在公用PHP文件中使用相对路径的正确方法
  2. 基于SSM+Vue论坛发布系统-Java新闻博客论坛系统代码
  3. Excel:有合并列和横排多行的每个单元格数据与首列组合竖排
  4. 中国企业再迎出海潮,只不过主角已是AI了
  5. 点云txt格式转pcd(Open3D支持格式)
  6. stm32f103——按键检测(轮询方式)
  7. Calibrate: LDP via Incorporating Prior Knowledge
  8. Scrapy定制管道爬取pexels.com网站信息
  9. 三星 android q,安卓Q已经来了你用上安卓P了吗?
  10. [hqyj]day-9