2026/4/5 8:39:24
网站建设
项目流程
哪个网站下载软件最安全,滨州做微商城网站,企业宣传制作app哪个好,哪个网站可以做自由行地图要开始折腾折腾 Azure Kinect 了#xff0c;注意它和 Kinect 并不是一个东西。 左边这个是 Azure Kinect#xff0c;右边那个是 Kinect#xff0c;或者叫 Microsoft Kinect 或者 Kinect for Windows#xff0c;它两既长得不一样#xff0c;用法也不一样#xff0c;所以不…要开始折腾折腾 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就可以了。虽然官方文档的内容不算多但也不是这一篇博客能完全涵盖的这里只是告诉大家如何正确的开始正所谓师傅领进门。言归正传。安装SDKAzure 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目录下。添加完依赖以后就可以导入相关头文件开始编程了。#includek4a/k4a.h#includek4abt.h传感器相关的功能都在k4a下人体追踪相关的功能都在k4abt下bt就是BodyTracking 的缩写。把构建您的第一个身体追踪应用程序的示例程序拷贝到cpp文件中。#includestdio.h#includestdlib.h#includek4a/k4a.h#includek4abt.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_tdeviceNULL;VERIFY(k4a_device_open(0,device),Open K4A Device failed!);// Start camera. Make sure depth camera is enabled.k4a_device_configuration_tdeviceConfigK4A_DEVICE_CONFIG_INIT_DISABLE_ALL;deviceConfig.depth_modeK4A_DEPTH_MODE_NFOV_UNBINNED;deviceConfig.color_resolutionK4A_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_ttrackerNULL;k4abt_tracker_configuration_ttracker_configK4ABT_TRACKER_CONFIG_DEFAULT;VERIFY(k4abt_tracker_create(sensor_calibration,tracker_config,tracker),Body tracker initialization failed!);intframe_count0;do{k4a_capture_tsensor_capture;k4a_wait_result_tget_capture_resultk4a_device_get_capture(device,sensor_capture,K4A_WAIT_INFINITE);if(get_capture_resultK4A_WAIT_RESULT_SUCCEEDED){frame_count;k4a_wait_result_tqueue_capture_resultk4abt_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_resultK4A_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_resultK4A_WAIT_RESULT_FAILED){printf(Error! Add capture to tracker process queue failed!\n);break;}k4abt_frame_tbody_frameNULL;k4a_wait_result_tpop_frame_resultk4abt_tracker_pop_result(tracker,body_frame,K4A_WAIT_INFINITE);if(pop_frame_resultK4A_WAIT_RESULT_SUCCEEDED){// Successfully popped the body tracking result. Start your processingsize_tnum_bodiesk4abt_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_resultK4A_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_resultK4A_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_count100);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.htmlhttps://github.com/microsoft/Azure-Kinect-Samples/tree/master