Kinect有啥好玩的
1、通过骨骼追踪来识别和追踪运动的人。
2、通过深度数据来计算物体和传感器之间的距离。
3、通过声音和回声来捕捉声音确定声音的来源。
4、语音识别引擎可以识别命令语言,可以使程序变成声控的。
一、遍历和启动kinect
因为一个电脑最多支持4个kinect,我们必须遍历找到这些kinect并启动这些设备。KinectSensor这个类就代表设备本身,当我们声明一个private KinectSensor sensor;的时候,静态属性KinectSensors会被填充系统上连接的Kinect设备。因为属性是静态的,只要程序运行,那么这个Kinects的集合就存在了。
private KinectSensor sensor;
foreach (var potentialSensor in KinectSensor.KinectSensors) //所有支持foreach的集合类都继承IEnumerable接口
{
if (potentialSensor.Status == KinectStatus.Connected)
{
this.sensor = potentialSensor;
break;
}
}
通过foreach对Kinects集合进行迭代,一旦发现已经是连接状态的,把这个Kinect存在私有字段中。因为KinectSensors是一个集合,也可以通过KinectSensor.KinectSensors[0]直接选取
二、初始化设置,启动何种数据流
找到连接设备后,下一步就是要输出数据流。数据流包括图像、深度 、骨骼、红外数据流。.
if (this.sensor != null) //如果找到设备
{
this.sensor.ColorStream.Enable(ColorImageFormat.RgbResolution640x480Fps30); //设置图像图像流输出,构造函数中是设置输出的格式。
this.sensor.DepthStream.Enable(DepthImageFormat.Resolution640x480Fps30);
this.sensor.SkeletonStream.Enable();
this.sensor.ColorStream.Enable(ColorImageFormat.InfraredResolution640x480Fps30);
}
输出图像数据:KinectSensor包含ColorStream属性,返回的是 ColorImageStream类。通过调用Enable函数,初始化图像数据的格式,帧率和像素分辨率来让Kinect 输出图像数据。这些设置的初始值都在ColorImageFormat这个常量枚举中。Enable函数的默认值为RgbResolution640x480Fps30,它的意思是Kinect会输出RGB格式, 640x480分辨率,30帧每秒的图像。通过ColorImageFormat.RawBayerResolution640x480Fps30 也可以设置RAW格式的图片。
输出深度流数据:KinectSensor包含DepthStream属性,返回DepthImageStream对象,通过调用Enable函数,初始化图像的格式、分辨率、帧率可以输出深度流数据。设置数据在DepthImageFormat常量枚举中。默认值是RgbResolution640x480Fps30
输出骨骼数据:KinectSensor包含SkeletonStream 属性,返回SkeletonStream对象,通过调用Enable来产生骨骼数据。
KinectSensor包含ColorStream属性,返回的是 ColorImageStream类。通过调用Enable函数,可以输出红外数据,还是在DepthImageFormat这个枚举常量中设置,设置成InfraredResolution640x480Fps30即可
三、启动设备
if (this.sensor != null)
{
this.sensor.Start();
}
找到设备,设置启动数据流和图像格式后就可以,启动设备了。