news 2026/3/21 12:26:25

Azure Kinect 从入门到入坟

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Azure Kinect 从入门到入坟

要开始折腾折腾 Azure Kinect 了,注意它和 Kinect 并不是一个东西。


左边这个是 Azure Kinect,右边那个是 Kinect,或者叫 Microsoft Kinect 或者 Kinect for Windows,它两既长得不一样,用法也不一样,所以不要弄混了。Azure Kinect 用起来要简单一些。

Azure Kinect 的官方文档网址是 aka.ms/kinectdocs,它会跳转到 https://learn.microsoft.com/zh-cn/previous-versions/azure/kinect-dk/,我们也可以直接访问这个网址。这个是机翻的中文文档,内容不多,按照文档一步步操作就行,没什么难度。唯一要吐槽的就是这个鸡翻,没错,就像是鸡翻译的。举几个例子。

这里 “正文” 其实是 body。然后还有

这里标题中的 “车身框架” 和 下面的 “主体框架” 实际上都是 body frame,后面的 “主体索引映射” 是 body index map。更离谱的是下面这个。

“尸体” ??body 愣是给干成了 “尸体”,你就说是不是从入门到入坟吧。

如果想看英文原文的话,可以把文档连接中的zh_cn替换成en-us就可以了。虽然官方文档的内容不算多,但也不是这一篇博客能完全涵盖的,这里只是告诉大家如何正确的开始,正所谓师傅领进门。

言归正传。

安装SDK

Azure Kinect 有两个 SDK:

  • 一个是传感器 SDK,用来获取传感器数据,从这里下载安装就行。

  • 另一个是骨架追踪的 SDK,用来获取身体骨架关节数据,从这里下载安装。下载的时候我们选择 msi 版本。

第一个 SDK 只能装在 C 盘,第二个可以自由选择安装路径。这两个 SDK 在安装目录的tools目录里下也提供了一些工具给我们,可以将tools目录添加到环境变量,方便使用。

比如传感器 SDK 提供的k4aviewer.exe可以查看摄像头和麦克风数据,k4arecorder.exe可以用来录制视频。骨架追踪 SDK 提供的k4abt_simple_3d_viewer.exe可以用来查看人体骨骼关节。我们可以用它们来验证设备是否正常工作。

需要注意的是 Azure Kinect 必须连接到 USB 3.0 接口,大多数电脑用蓝色标记,联想电脑在 USB 接口旁边有 SS 字样标记。

代码获取数据

官网的示例可以直接跑,我们先来创建一个c++控制台工程,我用的是 visual studio 2022。在解决方案管理器中右键项目名,点击管理 NuGet 程序包


打开包管理页面后,在搜索框中输入Microsoft.Azure.Kinect,然后依次点击前两个包,在右边详情页点击安装。因为我已经安装过来,所以显示的是卸载按钮。

  • Microsoft.Azure.Kinect.Sensor包用来获取传感器数据;
  • Microsoft.Azure.Kinect.BodyTracking包用来获取人体骨架关节,如果不做人体追踪,只安装第一个就行。

依赖包会安装到项目的packages目录下,还自动生成了packages.config文件。不得不说,c嘎嘎终于鸟枪换炮了,包管理还是香。当然,你也可以用以前的那种方式去依赖之前安装的 SDK,头文件和库文件都在安装目录的sdk目录下。

添加完依赖以后,就可以导入相关头文件开始编程了。

#include<k4a/k4a.h>#include<k4abt.h>

传感器相关的功能都在k4a下,人体追踪相关的功能都在k4abt下,bt就是BodyTracking 的缩写。

把构建您的第一个身体追踪应用程序的示例程序拷贝到cpp文件中。

#include<stdio.h>#include<stdlib.h>#include<k4a/k4a.h>#include<k4abt.h>#defineVERIFY(result,error)\if(result!=K4A_RESULT_SUCCEEDED)\{\printf("%s \n - (File: %s, Function: %s, Line: %d)\n",error,__FILE__,__FUNCTION__,__LINE__);\exit(1);\}\intmain(){k4a_device_tdevice=NULL;VERIFY(k4a_device_open(0,&device),"Open K4A Device failed!");// Start camera. Make sure depth camera is enabled.k4a_device_configuration_tdeviceConfig=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_tsensor_calibration;VERIFY(k4a_device_get_calibration(device,deviceConfig.depth_mode,deviceConfig.color_resolution,&sensor_calibration),"Get depth camera calibration failed!");k4abt_tracker_ttracker=NULL;k4abt_tracker_configuration_ttracker_config=K4ABT_TRACKER_CONFIG_DEFAULT;VERIFY(k4abt_tracker_create(&sensor_calibration,tracker_config,&tracker),"Body tracker initialization failed!");intframe_count=0;do{k4a_capture_tsensor_capture;k4a_wait_result_tget_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_tqueue_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;}elseif(queue_capture_result==K4A_WAIT_RESULT_FAILED){printf("Error! Add capture to tracker process queue failed!\n");break;}k4abt_frame_tbody_frame=NULL;k4a_wait_result_tpop_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_tnum_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}elseif(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;}}elseif(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);return0;}

把 Azure Kinect 插上电源,连接到电脑,然后点击运行按钮,大功告成。

需要更多功能可以查看相关 API 或者查看官方示例程序:

  • https://microsoft.github.io/Azure-Kinect-Body-Tracking/release/1.x.x/structk4abt__frame__t.html
  • https://github.com/microsoft/Azure-Kinect-Samples/tree/master

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/14 10:01:07

EmotiVoice能否替代专业配音演员?成本与质量对比分析

EmotiVoice能否替代专业配音演员&#xff1f;成本与质量对比分析 在影视、游戏和有声内容爆发式增长的今天&#xff0c;一个声音的价值正在被重新定义。过去&#xff0c;一段富有感染力的独白需要顶级配音演员反复打磨数十遍&#xff1b;如今&#xff0c;仅用几秒音频样本和一段…

作者头像 李华
网站建设 2026/3/14 17:28:38

中文语音合成新高度:EmotiVoice对声调和语气的精准还原

中文语音合成新高度&#xff1a;EmotiVoice对声调和语气的精准还原 在智能语音助手越来越“能说会道”的今天&#xff0c;我们是否真正听到了“有感情的声音”&#xff1f;大多数TTS系统仍停留在“读字”阶段——语调平直、情感缺失&#xff0c;尤其在中文场景下&#xff0c;四…

作者头像 李华
网站建设 2026/3/21 0:20:38

sherpa-onnx嵌入式语音识别实战:跨平台部署与性能优化指南

sherpa-onnx嵌入式语音识别实战&#xff1a;跨平台部署与性能优化指南 【免费下载链接】sherpa-onnx k2-fsa/sherpa-onnx: Sherpa-ONNX 项目与 ONNX 格式模型的处理有关&#xff0c;可能涉及将语音识别或者其他领域的模型转换为 ONNX 格式&#xff0c;并进行优化和部署。 项目…

作者头像 李华
网站建设 2026/3/20 3:50:04

FanControl完整教程:Windows风扇智能控制终极方案

还在为电脑风扇噪音和散热效率发愁吗&#xff1f;FanControl这款免费的Windows风扇控制软件能够完美解决您的烦恼。通过智能温度监控和可视化曲线配置&#xff0c;即使是电脑新手也能轻松实现专业级的风扇管理效果。&#x1f31f; 【免费下载链接】FanControl.Releases This is…

作者头像 李华
网站建设 2026/3/11 11:43:32

Sist2终极指南:快速构建企业级文件搜索系统的完整解决方案

Sist2终极指南&#xff1a;快速构建企业级文件搜索系统的完整解决方案 【免费下载链接】sist2 Lightning-fast file system indexer and search tool 项目地址: https://gitcode.com/gh_mirrors/si/sist2 在当今信息爆炸的时代&#xff0c;如何从海量文件中快速找到所需…

作者头像 李华
网站建设 2026/3/12 10:02:03

如何在10分钟内搭建Next.js企业级认证系统

如何在10分钟内搭建Next.js企业级认证系统 【免费下载链接】next-shadcn-dashboard-starter Admin Dashboard Starter with Nextjs14 and shadcn ui 项目地址: https://gitcode.com/gh_mirrors/ne/next-shadcn-dashboard-starter 还在为认证系统开发而头疼吗&#xff1f…

作者头像 李华