即普通的彩色摄像头,能获得RGB数据流,后期可显示实时图像,如用第三方类库(Coding4Fun Kinect Toolkit),可保存图片、视频文件。
使用Color数据,非常方便,通过下面的三步操作即可:
步骤一 启动Kinect:
通过查询KinectStatus.Connected的Kinect返回即可。
KinectSensor这个对象,不能new,需要从KinectSensor.KinectSensors数组中便利获得。
步骤二 配置Color的参数:
Kinect提供了ColorImageFormat类型的7种Color图像格式。常用的RgbResolution640x480Fps30,640和480的图像,每秒30帧图像。还有Yuv、Bayer、Infrared三种高级图像格式。
步骤三 Color回调函数:
可获得ColorImageFrame类对象数据,而实际的Color数据存储在byte[]中。
雷区:
WriteableBitmap.Create(data.Width, data.Height, 96, 96,PixelFormats.Bgr32, null, data, data.Width * 4);
因为选择的是Bgr32图像呈现,而API接口如下中的stride老是传递不对
BitmapSource Create(int pixelWidth, int pixelHeight, double dpiX, double dpiY, PixelFormat pixelFormat, BitmapPalette palette, Array pixels, int stride);
后来才摸索出来规律:
- RgbResolution1280x960Fps12 Bgr32 4字节
- RgbResolution640x480Fps30 Bgr32 4字节
- InfraredResolution640x480Fps30 Gray16 2字节
相对于目前手机的高配彩色摄像头,XBox 360 Kinect的这个彩色摄像头,分辨率比较差:仅仅能呈现640*480像素的, 连720P都达不到。还有一种设置是1280*960分辨率,稍微清晰,可惜是15FPS(低于24FPS的,实时录像会有拖影,影响效果)
比较期待今年7月15号发布的Kinect V2版本,据说可以获得1080P的彩色图像。