2014-11-06 67 views
0

任何人都知道,如果可能的话,如何降低颜色流的kinect框架分辨率?因为全高清尺寸是太高了,我scope.Thanks 我已经找到了全高清帧此代码:Kinect v2 for windows:在c中调整颜色框架的大小#

private BitmapSource ToBitmap(ColorFrame frame) 
    { 
     int width = frame.FrameDescription.Width; 
     int height = frame.FrameDescription.Height; 
     PixelFormat format = PixelFormats.Bgr32; 

     byte[] pixels = new byte[width * height * ((PixelFormats.Bgr32.BitsPerPixel + 7)/8)]; 

     if (frame.RawColorImageFormat == ColorImageFormat.Bgra) 
     { 
      frame.CopyRawFrameDataToArray(pixels); 
     } 
     else 
     { 
      frame.CopyConvertedFrameDataToArray(pixels, ColorImageFormat.Bgra); 
     } 

     int stride = width * format.BitsPerPixel/8; 



     return BitmapSource.Create(width, height, 96, 96, format, null, pixels, stride); 


    } 
+0

什么参考您包括在内,以便使用“BitmapSource”和“PixelFormats”和“BitsPerPixel”? – ThunderWiring 2016-09-27 08:31:43

+0

对不起,但我不再有这个项目,但我认为这些都在System.Windows.media – luca 2016-09-27 15:22:02

回答

0

我已经解决了在结尾添加该代码

BitmapSource bitmap= BitmapSource.Create(width, height, 96, 96, format, null, pixels, stride); 
ScaleTransform scale=new ScaleTransform((Width/bitmap.PixelWidth),(Height/bitmap.PixelHeight)); 
TransformedBitmap tbBitmap = new TransformedBitmap(bitmap, scale); 

return tbBitmap; 

所以完整的方法是:

private BitmapSource ToBitmap(ColorFrame frame) 
    { 
     int width = frame.FrameDescription.Width; 
     int height = frame.FrameDescription.Height; 
     PixelFormat format = PixelFormats.Bgr32; 

     byte[] pixels = new byte[width * height * ((PixelFormats.Bgr32.BitsPerPixel + 7)/8)]; 

     if (frame.RawColorImageFormat == ColorImageFormat.Bgra) 
     { 
      frame.CopyRawFrameDataToArray(pixels); 
     } 
     else 
     { 
      frame.CopyConvertedFrameDataToArray(pixels, ColorImageFormat.Bgra); 
     } 

     int stride = width * format.BitsPerPixel/8; 
     BitmapSource bitmap= BitmapSource.Create(width, height, 96, 96, format, null, pixels, stride); 
     ScaleTransform scale=new ScaleTransform((640.0/bitmap.PixelWidth),(480.0/bitmap.PixelHeight)); 
     TransformedBitmap tbBitmap = new TransformedBitmap(bitmap, scale); 

     return tbBitmap; 
    }