在执行从 EMGU 调用的 EqualizeHist 函数时,它会引发以下错误。
“试图读取或写入受保护的内存。这通常表明其他内存已损坏。”
仅具有以下分辨率的图像才会发生此错误。对于所有其他分辨率,它工作正常。
width = 1785 height = 1200
width = 1786 height = 1200
width = 1787 height = 1200
width = 1786 height = 1205
width = 1786 height = 1204
width = 1786 height = 1203
width = 1786 height = 1201
width = 1786 height = 1200
width = 1786 height = 1199
以下是代码
Emgu.CV.Image<Bgr, Byte> imageCV = new Emgu.CV.Image<Bgr, Byte>("file.jpg");
Emgu.CV.Image<Gray, byte> grayframe = imageCV.Convert<Gray, byte>();
grayframe._EqualizeHist();
例如,宽度 = 1786 高度 = 1200 会引发错误,而宽度 = 1786 高度 = 1202 则不会。您可以通过将任何图像的大小调整为上述分辨率来轻松地重新创建此错误,它会引发错误。
我在 C++ opencv 中检查了上述解决方案,它在那里工作正常。
请让我知道这个错误背后的问题可能是什么。