Beispiel #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender">
        /// A <see cref="System.Object"/>
        /// </param>
        /// <param name="e">
        /// A <see cref="VideoCamera.DataReceivedEventArgs"/>
        /// </param>
        private void HandleVideoDataReceived(object sender, VideoCamera.DataReceivedEventArgs e)
        {
            if (this.kinect == null || this.kinect.IsOpen == false)
            {
                return;
            }
            if ((DateTime.Now - this.videoLastFrame).TotalMilliseconds >= 1000)
            {
                this.videoFPS        = this.videoFrameCount;
                this.videoFrameCount = 0;
                this.videoLastFrame  = DateTime.Now;
            }
            else
            {
                this.videoFrameCount++;
            }

            // Swap mid and back
            GCHandle tmp = rgbHandleBack;

            rgbHandleMid  = rgbHandleBack;
            rgbHandleBack = tmp;

            // Set kinect video camera's buffer to new back buffer
            this.kinect.VideoCamera.DataBuffer = rgbHandleBack.AddrOfPinnedObject();
        }
Beispiel #2
0
        void VideoCamera_DataReceived(object sender, VideoCamera.DataReceivedEventArgs e)
        {
            if (lockedRGB)
            {
                return;
            }

            //video camera runs at double the fps of the depth so we always have image data available.
            if (videoFrameCount % (30 / (frameRate * 2)) != 1)
            {
                videoFrameCount++;
                return;
            }

            lockedRGB = true;

            lastImageData = e.Image.Data;

            this.Dispatcher.Invoke(
                new Action(
                    delegate()
            {
                _colorImage.Source = BitmapSource.Create(
                    e.Image.Width,
                    e.Image.Height,
                    96,
                    96,
                    PixelFormats.Rgb24,
                    null,
                    e.Image.Data,
                    e.Image.Width * 3);
            }));

            videoFrameCount++;

            lockedRGB = false;
        }
Beispiel #3
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="sender">
 /// A <see cref="System.Object"/>
 /// </param>
 /// <param name="e">
 /// A <see cref="VideoCamera.DataReceivedEventArgs"/>
 /// </param>
 private void HandleKinectVideoCameraDataReceived(object sender, VideoCamera.DataReceivedEventArgs e)
 {
     this.previewControl.HandleVideoBackBufferUpdate();
     this.kinect.VideoCamera.DataBuffer = this.previewControl.VideoBackBuffer;
 }