将“Emgu.CV.Mat”分配给“Emgu.CV.UI.ImageBox”(Emgu)时出现“System.AccessViolationException”

时间:2016-10-26 14:17:14

标签: c# emgucv access-violation mat

我正在尝试将Emgu.CV.Mat分配给Emgu.CV.UI.ImageBox,但我在System.AccessViolationException文件中遇到CvInvokeCore.cs错误(第2379行{{ 1}}):

  

Emgu.CV.World.dll中出现未处理的“System.AccessViolationException”类型异常

     

附加信息:尝试读取或写入受保护的内存。这通常表明其他内存已损坏。

守则非常简单。我生成了一个Bitmap

cveMinMaxLoc(iaArr, ref minVal, ref maxVal, ref minLoc, ref maxLoc, iaMask);

我使用的Bitmap tmp = mybitmap.getBitmap(); // generates my Bitmap pictureBox1.Image = tmp; // assigning it to an Win Form picture Box works pretty fine imageBox1.Image = ConvertBitmapToMat(tmp); // but converting the Bitmap to an Mat file // and try to assign it to an // Emgu.CV.UI.ImageBox throws the // error in the above mentioned file. 代码是:

ConvertBitmapToMat()

发现于http://avidprogrammer.blogspot.de/2016/05/emgucv-c-convert-bitmap-object-to-mat.html

对此有何建议?

1 个答案:

答案 0 :(得分:3)

使用图片<>

Bitmap tmp = mybitmap.getBitmap();
Image<Bgr,Byte> img = new Image<Bgr,Byte>(tmp);
imageBox1.Image = img;

如果你需要Mat类型,只需使用img.Mat