刚接触到Kinect,简要地介绍一下其摄像头相关的结构功能;
Kinect 有两类摄像头,近红外摄像头和普通的视频摄像头。视频摄像头提供了一般摄像
头类似的彩色影像。这种数据流是三中数据流中使用和设置最简单的。因此我也最先接触彩色摄
像头
使用Kinect 数据流也有三部。首先是数据流必须可用。一旦数据流可用,应用程序就
可以从数据量中读取数据并对数据进行处理和展现。一旦有新的数据帧可用,这两个步骤就
会一直进行,下面的代码展现了如何初始化ColorImage 对象。
public KinectSensor Kinect
{
get { return this.kinect; }
set
{
//如果带赋值的传感器和目前的不一样
if (this.kinect != value)
{
//如果当前的传感对象不为null
if (this.kinect != null)
{
//uninitailize 当前对象
this.kinect = null;
}//如果传入的对象不为空,且状态为连接状态
if (value != null && value.Status == KinectStatus.Connected)
{
this.kinect = value;
}
}
}
}
标记红色的两行调用了两个方法,分别初始化和释放KinectSensor 和ColorImageStream 对象。
InitializeKinectSensor对象调用ColorImageStream 的Enable 方法,注册ColorFrameReady 事件并调用
start 方法。
一旦打开了传感器,当新数据帧大道是就会触发frameready 事件,该事件触发频率是每秒30次。
//初始化Kinect对象
private void InitializeKinectSensor(KinectSensor kinectSensor)
{
if (kinectSensor != null)
{
kinectSensor.ColorStream.Enable();
kinectSensor.ColorFrameReady += new EventHandler<ColorImageFrameReadyEventArgs>;(kinectSensor_ColorFrameReady);
kinectSensor.Start();
}
}
//未初始化Kinect对象
private void UninitializeKinectSensor(KinectSensor kinectSensor)
{
if (kinectSensor != null)
{
kinectS