gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 23:08:38 26 4
gpt4 key购买 nike

您好,我想做的是将 Emgu.CV.Mat 分配给 Emgu.CV.UI.ImageBox 但我一直收到 CvInvokeCore.cs 文件中的 System.AccessViolationException 错误(第 2379 行 cveMinMaxLoc(iaArr, ref minVal, ref maxVal, ref minLoc, ref maxLoc, iaMask); ):

An unhandled exception of type 'System.AccessViolationException' occurred in Emgu.CV.World.dll

Additional information: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

代码非常简单。我生成一个位图

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()代码是:

public Mat ConvertBitmapToMat(Bitmap bmp)
{
// Lock the bitmap's bits.
Rectangle rect = new Rectangle(0, 0, bmp.Width, bmp.Height);

System.Drawing.Imaging.BitmapData bmpData =
bmp.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite,
bmp.PixelFormat);

// data = scan0 is a pointer to our memory block.
IntPtr data = bmpData.Scan0;

// step = stride = amount of bytes for a single line of the image
int step = bmpData.Stride;

// So you can try to get you Mat instance like this:
Mat mat = new Mat(bmp.Height, bmp.Width, Emgu.CV.CvEnum.DepthType.Cv32F, 4, data, step);

// Unlock the bits.
bmp.UnlockBits(bmpData);

return mat;
}

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

对此有什么建议吗?

最佳答案

使用图片<>

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

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

关于c# - 将 `Emgu.CV.Mat` 分配给 `Emgu.CV.UI.ImageBox` 时出现“System.AccessViolationException”(Emgu),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40264730/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com