2013-08-05 2 views
1

Я только начал использовать EmguCV для обработки изображений Kinect, и ArgumentException происходило при создании EmguCV изображения из глубины потока, как это:преобразовать Kinect глубина изображения ошибки изображения EmguCV

private void DepthFrameReady(object sender, DepthImageFrameReadyEventArgs e) 
    { 
     DepthImageFrame df = e.OpenDepthImageFrame(); 
     if (df != null) 
     { 
      short[] data = new short[df.PixelDataLength]; 
      df.CopyPixelDataTo(data); 
      Bitmap b = data.ToBitMap(df.Width, df.Height, System.Drawing.Imaging.PixelFormat.Format16bppGrayScale); 
      Image<Gray, short> im = new Image<Gray, short>(b); //run-time exception here 

Метод расширения ToBitmap полностью копируются с Kinect SDK учебник пример:

public static Bitmap ToBitmap(this short[] data, int width, int height, System.Drawing.Imaging.PixelFormat format) 
    { 
     var bitmap = new Bitmap(width, height, format); 

     var bitmapData = bitmap.LockBits(
      new System.Drawing.Rectangle(0, 0, bitmap.Width, 
      bitmap.Height), 
      ImageLockMode.WriteOnly, 
      bitmap.PixelFormat); 
     Marshal.Copy(data, 0, bitmapData.Scan0, data.Length); 
     bitmap.UnlockBits(bitmapData); 
     return bitmap; 
    } 

Я проверил, что b имел действительное значение, а не нулевой. Интересно, почему произошло это исключение, есть ли проблема с форматом изображения?

ответ

0

Попробуйте использовать:

Image<Gray, byte> im = new Image<Gray, byte>(b); 
+0

Я уже нашел, что 'b' является недействительным, и когда я изменить формат растрового изображения, чтобы rgb565 он работал вместе с' '. Но что мне делать, если мне нужно поддерживать 16-битную точность? Я слышал, что «bitmap» на самом деле не поддерживал 16-битную серию, потому что не было 16-битной графической карты, правда? Теперь я пытаюсь использовать '' в качестве среднего формата, а затем снова копировать данные в 'short []', а затем напрямую конвертировать 'short []' в 'BitmapSource', я проверю, работает ли это. Спасибо всем тем же – Cherry

Смежные вопросы