Beispiel #1
0
        //write .avi and store data in .xml for a certain frame
        private void writeFrame(ReplayAllFramesReadyEventArgs e)
        {
            //colour frame
            BitmapImage bitmapImage_currentframe = new BitmapImage();
            Bitmap      bitmap_currentframe      = new Bitmap(640, 480);
            var         colorImageFrame          = e.AllFrames.ColorImageFrame;

            if (colorImageFrame != null)
            {
                if (isfirst)
                {
                    initialframenumber = colorImageFrame.FrameNumber;
                    System.Console.WriteLine("initialFramenumber = " + initialframenumber);
                    isfirst = false;
                }

                lastframenumber = colorImageFrame.FrameNumber;
                //write xml
                xmlwriter.storeframe(e.AllFrames.SkeletonFrame, colorImageFrame.FrameNumber, replay.CoordinateMapper);

                //write avi
                var pixelData = new byte[colorImageFrame.PixelDataLength];
                colorImageFrame.CopyPixelDataTo(pixelData);
                var stride = colorImageFrame.Width * PixelFormats.Bgr32.BitsPerPixel / 8;
                //converision to bitmap
                imagesource.WritePixels(new Int32Rect(0, 0, colorImageFrame.Width, colorImageFrame.Height), pixelData, stride, 0);
                bitmapImage_currentframe = ConvertWriteableBitmapToBitmapImage(imagesource);
                bitmap_currentframe      = ConvertBitmapImageToBitmap(bitmapImage_currentframe);
                videoWriter.AddFrame(bitmap_currentframe);
                framecounter++;
            }
        }