Kinect虚拟试衣间开发(1)-显示colorFrame图像

来源:互联网 发布:分布式算法有哪些 编辑:程序博客网 时间:2024/04/29 07:58
  • 声明变量
private KinectSensor kinectSensor = null;//读取多源数据,以便于同时处理private MultiSourceFrameReader multiSourceFrameReader = null;private MultiSourceFrame multiSourceFrame;//变量转换器private CoordinateMapper coordinateMapper;//存储要显示图像private WriteableBitmap bitmap;//帧描述,有可以使用的元变量private FrameDescription colorFrameDescription;
  • 变量初始化
  public MainWindow() {this.kinectSensor = KinectSensor.GetDefault();this.multiSourceFrameReader = this.kinectSensor.OpenMultiSourceFrameReader(FrameSourceTypes.Color | FrameSourceTypes.Depth | FrameSourceTypes.Body);this.multiSourceFrameReader.MultiSourceFrameArrived += this.Reader_multiSourceFrameArrived;colorFrameDescription = this.kinectSensor.ColorFrameSource.CreateFrameDescription(ColorImageFormat.Bgra); //存储图,bitmap的长和高都是以pixel度量的,colorFrame.width返回值也是以pixel为单位的长度this.bitmap = new WriteableBitmap(colorFrameDescription.Width, colorFrameDescription.Height, 96.0, 96.0, PixelFormats.Bgr32, null);//坐标转换器this.coordinateMapper =this.kinectSensor.CoordinateMapper; this.kinectSensor.Open(); this.DataContext = this; InitializeComponent();}
  • 监听事件处理
private void Reader_multiSourceFrameArrived(object sender, MultiSourceFrameArrivedEventArgs e){ multiSourceFrame = e.FrameReference.AcquireFrame();            using (ColorFrame colorFrame = multiSourceFrame.ColorFrameReference.AcquireFrame())            {                if (colorFrame != null)                {                    //锁一下,保存后台缓冲                    this.bitmap.Lock();                    //dataFrame:The pointer to the buffer to which the data will be copied. size:The size of the buffer.ColorFormat:The color format of the converted data                    colorFrame.CopyConvertedFrameDataToIntPtr(this.bitmap.BackBuffer, (uint)(this.colorFrameDescription.Width * this.colorFrameDescription.Height * 4), ColorImageFormat.Bgra);                    //重设bitmap的数据                    this.bitmap.AddDirtyRect(new Int32Rect(0, 0, this.bitmap.PixelWidth, this.bitmap.PixelHeight));                    //解锁                    this.bitmap.Unlock();                }            }}
  • 返回彩图
public ImageSource imageSource        {            get            {                return this.bitmap;            }        }
阅读全文
1 0
原创粉丝点击