以下代码导致访问冲突异常 - 为什么会这样?我可以从unsafe
块内部调用AForge过滤器吗?
unsafe
{
BitmapData bmd = ThresholdedImage.LockBits(boundingR, ImageLockMode.ReadWrite, ThresholdedImage.PixelFormat);
BitmapData bmda = intersectResult.LockBits(
new Rectangle(0, 0, intersectResult.Width, intersectResult.Height),
ImageLockMode.ReadWrite,
intersectResult.PixelFormat);
intersectResult = intersectFilter.Apply(bmd); //causes exception here
ImageStatistics st = new ImageStatistics(intersectResult);
area = st.PixelsCountWithoutBlack;
intersectResult.UnlockBits(bmda);
ThresholdedImage.UnlockBits(bmd);
}
答案 0 :(得分:0)
我试图追查这个问题。
您能否确认您的boundingR区域确实不代表整个图像?
您将收到此异常,因为在AForge端的某个位置存在错误地使用完整图像的Stride
值的非托管字节副本。
我认为源自BaseInPlacePartialFilter
的过滤器可以处理图片区域,但基于BaseInPlaceFilter
的过滤器很可能会出现问题。
如果可行,您可以在整个图像上应用过滤器,然后仅复制您感兴趣的区域...