2016-10-29 5 views
0

что мне нужно - Emgu.Cv.Mat. Из-за того, что у меня есть Bitmap, я хочу передать его информацию этому экземпляру Mat.System.AccessViolationException при построении Mat с использованием EmguCV

Вот мой код:

//the real file is not stored on the harddrive. this is for demonstration only. 
Bitmap fileBmp = new Bitmap(@"C:\Users\my\Desktop\file1.PNG"); 

.

//generating an Image from it works pretty fine as well. Even displaying it works great. 
Image<Bgr, Byte> image = new Image<Bgr, Byte>(fileBmp); 

.

//But I'm not able to generate a Mat with it. Not using the Bitmap 
Mat mat1 = new Mat(new int[] { fileBmp.Width, fileBmp.Height }, DepthType.Cv8S, fileBmp.GetHbitmap()); 

//... and not using the Image 
Mat mat2 = new Mat(new int[] { fileBmp.Width, fileBmp.Height }, DepthType.Cv8S, image.Bitmap.GetHbitmap()); 

Я постоянно получаю

System.AccessViolationException

Если я прочитал либо mat1.Bitmap свойства или mat2.Bitmap свойства (все другие свойства выглядящих отлично). error Что не так с моим кодом?

Любые предложения, как передать «графическую информацию» на номер Mat, используя EmguCv?

Один раз: использование new Mat(@"C:\Users\my\Desktop\file1.PNG") невозможно из-за того, что растровое изображение не хранится на жестком диске.

ответ

2
Image<Bgr, Byte> image = new Image<Bgr, Byte>(fileBmp); 
Mat mat1 = image.Mat; 
0

Также проверьте, чтобы убедиться, что вы компиляции для x64, если вы используете EmguCV 3,1