/// <summary>
        /// Updates pixel data and if necessary bitmap as well.
        /// </summary>
        /// <param name="frame"></param>
        /// <param name="updateDisplay">Updates the bitmap if true.</param>
        public void Update(ReplayColorImageFrame frame, bool updateDisplay = true)
        {
            PixelData = new byte[frame.PixelDataLength];

              frame.CopyPixelDataTo(PixelData);

              if (!updateDisplay)
            return;

              if (Bitmap == null) {
            Bitmap = new WriteableBitmap(frame.Width, frame.Height,
                                     96, 96, PixelFormats.Bgr32, null);
              }

              int stride = Bitmap.PixelWidth * Bitmap.Format.BitsPerPixel / 8;
              Int32Rect dirtyRect = new Int32Rect(0, 0, Bitmap.PixelWidth, Bitmap.PixelHeight);

              if (frame.Format == ColorImageFormat.RawYuvResolution640x480Fps15) {
            if (yuvTemp == null)
              yuvTemp = new int[frame.Width * frame.Height];

            int current = 0;

            for (int uyvyIndex = 0; uyvyIndex < PixelData.Length; uyvyIndex += 4) {
              byte u = PixelData[uyvyIndex];
              byte y1 = PixelData[uyvyIndex + 1];
              byte v = PixelData[uyvyIndex + 2];
              byte y2 = PixelData[uyvyIndex + 3];

              yuvTemp[current++] = ConvertFromYUV(y1, u, v);
              yuvTemp[current++] = ConvertFromYUV(y2, u, v);
            }

            Bitmap.WritePixels(dirtyRect, yuvTemp, stride, 0);
              } else {
            Bitmap.WritePixels(dirtyRect, PixelData, stride, 0);
              }

              RaisePropertyChanged(() => Bitmap);
        }
Esempio n. 2
0
        void ReplayFrame(ReplayDepthImageFrame df, ReplayColorImageFrame cf,
        ReplaySkeletonFrame sf)
        {
            if (df != null) {
            labelFrameNumber.Content = df.FrameNumber.ToString();
            if (gtReplayer != null) {
              var data = gtReplayer.GetDataFrame(df.FrameNumber);
              if (data != null) {
            UpdateGroundTruthDisplay(data);
              }
            }
              }
              colorManager.Update(cf, !displayDebug);
              depthManager.Update(df);
              UpdateSkeletonDisplay(sf);
              if (handTracker != null && recogEngine != null) {
            var result = handTracker.Update(depthManager.PixelData, colorManager.PixelData,
            SkeletonUtil.FirstTrackedSkeleton(sf.Skeletons));
            var gesture = recogEngine.Update(result, viewHog);

            lock (inputServer)
              inputServer.Send(gesture);

            textGestureEvent.Text = gesture;
            fpsCounter.LogFPS();
            UpdateDisplay(result);
              }
        }
Esempio n. 3
0
 public ReplayAllFrames()
 {
     SkeletonFrame   = new ReplaySkeletonFrame();
     DepthImageFrame = new ReplayDepthImageFrame();
     ColorImageFrame = new ReplayColorImageFrame();
 }
Esempio n. 4
0
 public ReplayAllFrames()
 {
     SkeletonFrame  = new ReplaySkeletonFrame();
       DepthImageFrame = new ReplayDepthImageFrame();
       ColorImageFrame = new ReplayColorImageFrame();
 }