即普通的彩色摄像头,能获得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的彩色图像。