Преобразование WriteableBitmap в Bitmap для использования в EmguCV
в моем коде я получаю WriteableBitmaps из массива байтов (в свою очередь из Kinect), и я хотел бы превратить их в растровые изображения для использования с EmguCV. В настоящее время это код, который у меня есть:
// Copy the pixel data from the image to a temporary array
colorFrame.CopyPixelDataTo(this.colorPixels);
// Write the pixel data into our bitmap
this.colorBitmap.WritePixels(
new Int32Rect(0, 0, this.colorBitmap.PixelWidth, this.colorBitmap.PixelHeight),
this.colorPixels,
this.colorBitmap.PixelWidth * colorFrame.BytesPerPixel,
0);
BitmapEncoder encoder = new BmpBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(colorBitmap));
MemoryStream ms = new MemoryStream();
encoder.Save(ms);
Bitmap b=new Bitmap(ms);
Image<Gray, Byte> img = new Image<Gray, Byte>(b);
img = img.ThresholdBinary(new Gray(200), new Gray(255));
Я получил нижнюю половину кода от здесь.Код компилируется и все такое, но зависает, когда я пытаюсь запустить программу (она должна выполнить некоторые операции над изображением, а затем преобразовать его обратно в формат, который может быть представлен как изображение.) Пауза моя код, а затем с помощью IntelliTrace в VS 2013, я получаю следующее исключение в Image<Gray, Byte> img = new Image<Gray, Byte>(b);
"Система.ArgumentException было брошено: форматы URI не поддерживаются."Использование альтернативного кода, откуда я иду непосредственно из байта в растровое изображение, дает мне ту же ошибку. (код можно найти здесь.)
кто - нибудь получил советы о том, как решить эту ошибку, или альтернативные способы приведения к растровому изображению? Я новичок с C# & EmguCV, и я был бы очень признателен.
2 ответов
оказывается, весь код в порядке. Я не слишком уверен в технических деталях ошибки, но ошибка получена при попытке написать изображение Gray16 в WriteableBitmap (которое должно быть преобразовано в изображение Emgu.) Bgr565 или другие форматы поддерживаются, и я считаю, что Gray16 не был полностью реализован MS.если делать приложение WinForms, Format16bppGray также даст ту же ошибку.
Я решил использовать серое изображение Emgu при написании растрового изображения как Bgr555, что намного шумнее, но лучше, чем ничего.
У меня была та же проблема. Исключение "форматы URI не поддерживаются" не имело ничего общего с растровым изображением, но с загрузкой необходимых библиотек opencv. Я просто скопировал папки x86 и x64, включая opencv_core290.dll и другие в мой исполняемый каталог.