基于Kinect SDK中的API函数完成kinect解决方案,如下图所示,主要包括5个部分:初始化,获取图像,分析跟踪状态,显示图像,以及退出。下面将分别介绍。
Kinect SDK中的API函数以“Nui”开头,一般命名为“NuiXXXX”。为了与Kinect SDK中的API函数区别,kinect解决方案中的函数均以“KinectXXXX”命名,内部调用Kinect SDK中的API函数。
1 初始化
对应KinectNuiInit()函数,初始化Kinect设备,设置摄像头仰角,打开颜色流、深度流和骨架流。
2 获取图像
对应KinectGetDepthImage()、KinectColorFrameToImage()和KinectGetSkeleton()函数,从颜色流、深度流和骨架流中获得数据帧,转化为openCV中的IplImage图像类型。
上面的3个函数调用了KinectGetFrame()、KinectDepthFrameToImage()和KinectColorFrameToImage(),获取数据帧,并且转化为对应图像类型。
3 分析跟踪状态
对应KinectJudgeTrack(),判断当前的跟踪状态以及控制权所示情况。
KinectJudgeTrack()调用了KinectPointDistance()和KinectPointHorizontalDistance(),求出两点之间的距离以及两点之间的水平距离。
4 显示图像
对应KinectDrawSkeleton()以及主函数中的显示部分,实时显示颜色图、深度图以及处理之后的骨架图。
KinectDrawSkeleton()调用了KinectDrawSkeletonLine(),画出骨架中各关节的连线。
5 退出
对应KinectNuiUnInit(),关闭颜色流、深度流和骨架流,关闭显示颜色图、深度图以及处理之后的骨架图的界面,关闭Kinect设备。