我正在使用 Kinect SDK 从 Kinect 读取数据。此刻我有一个应用程序,它每隔几秒就从流中保存一个图像并开始录制音频,但是我只希望它在检测到移动时执行代码(想想当检测到移动时开始录制的安全摄像头)。如果检测到运动,我看不到代码示例中引发的任何事件,如果检测到人体,我可以使用(如果我正确的话)的唯一甚至接近的东西。有没有简单的方法来解决这个问题?
问问题
165 次
2 回答
1
目前在这种情况下没有引发任何事件。我所做的是订阅了 API 附带的图像就绪事件,并使用AForge.net上的库将之前的图像与当前图像进行了比较。
于 2012-01-06T00:39:26.493 回答
0
您可以使用 RuntimeOptions.UseSkeletalTracking 标志初始化 Kinect 运行时以从设备接收骨骼跟踪数据:
var runtime = new Runtime();
runtime.Initialize(RuntimeOptions.UseSkeletalTracking| RuntimeOptions.UseDepthAndPlayerIndex | RuntimeOptions.UseColor);
然后订阅 SkeletonFrameReady 事件:
runtime.SkeletonFrameReady += nui_SkeletonFrameReady;
此事件将连续触发,您需要遍历 SkeletonFrame 集合中六个可能的骨架集合,以确定是否正在跟踪任何骨架。
void nui_SkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e)
{
SkeletonFrame allSkeletons = e.SkeletonFrame;
//get the first tracked skeleton
SkeletonData skeleton = (from s in allSkeletons.Skeletons
where s.TrackingState == SkeletonTrackingState.Tracked
select s).FirstOrDefault();
if skeleton != null
{
// Start recording audio, etc
}
}
更多详细信息和示例可在此第 9 频道视频中找到:
于 2011-11-27T22:31:14.450 回答