【发布时间】:2016-03-27 05:12:35
【问题描述】:
我正在使用 C# 进行图像处理项目。我正在使用 OTSU 阈值方法。我收到此异常“尝试读取或写入受保护的内存。这通常表明其他内存已损坏。”我用谷歌搜索堆栈溢出超过 2 天,但我没有得到正确的解决方案。我仅在 少数图片 中收到此错误,而其他图片工作正常...
public void Convert2GrayScaleFast(Bitmap bmp)
{
BitmapData bmData = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height),
ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
unsafe
{
byte* p = (byte*)(void*)bmData.Scan0.ToPointer();
int stopAddress = (int)p + bmData.Stride * bmData.Height;
while ((int)p != stopAddress)
{
p[0] = (byte)(.299 * p[2] + .587 * p[1] + .114 * p[0]);
p[1] = p[0];
p[2] = p[0];
p += 3;
}
}
bmp.UnlockBits(bmData);
}
我在这一行遇到了异常
p[0] = (byte)(.299 * p[2] + .587 * p[1] + .114 * p[0]);
不要告诉绕过异常使用工具菜单 -> 选项 -> 调试 -> 常规 -> 取消选中此选项“在模块加载时抑制 JIT 优化”。我已经尝试了所有方法,但对我没有任何效果..
Here is the image which throws the exception如果你能帮我解决问题,非常感谢。
【问题讨论】:
-
Airtel 4G 跑得太快了。由于 4G 的速度和延迟,我确信 Windows 无法处理该文件。你试过其他没有airtel 4G的照片吗?
-
@Anirugu 哇,好幽默!任何我如何找到使用 EMGU 进行 otsu 阈值处理的方法......但我没有解决这个问题......感谢您的评论......
-
我使用 EMGU CV 找到阈值解决了我的问题。但我无法解决这个问题。如果有人解决了这个问题,它可能对任何人都有帮助...
-
旁注:您应该先让安全代码正常工作,然后再将其转换为不安全...,而不是“我用谷歌搜索并搜索堆栈溢出超过 2 天”
标签: c# image-processing