使用EmguCV构造Mat时出现System.AccessViolationException

时间:2016-10-29 15:16:48

标签: c# emgucv access-violation

我需要的是Emgu.Cv.Mat。由于我有一个Bitmap我想将他的信息传递给这个Mat实例。

这是我的代码:

//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我的代码出了什么问题?

任何建议如何传递&#34;图形信息&#34;使用MatEmguCv

再次:由于位图未存储在硬盘驱动器上,因此无法使用new Mat(@"C:\Users\my\Desktop\file1.PNG")

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

如果您使用的是EmguCV 3.1,请检查以确保您正在编译x64