0

大家好,这是我的第一个问题。

我正在使用 OpenCvSharp 开发一个软件,显然,在 c# 中,该软件的目标是将中值模糊过滤器应用于通过内存工作的位图。

代码示例:

        using (Bitmap bmpSrc = new Bitmap(@"C:\Users\IPTE40\Desktop\OpenCV\View2.bmp"))
        {
            unsafe
            {
                BitmapData bmpDataSrc = bmpSrc.LockBits(new Rectangle(0, 0, bmpSrc.Width, bmpSrc.Height), ImageLockMode.ReadOnly, bmpSrc.PixelFormat);

                int iNumberOfBytesOriginal = bmpDataSrc.Stride * bmpSrc.Height;
                byte[] byteArrayOriginal = new byte[iNumberOfBytesOriginal];
                System.Runtime.InteropServices.Marshal.Copy(bmpDataSrc.Scan0, byteArrayOriginal, 0, iNumberOfBytesOriginal);
                IntPtr ptrDataSrc = System.Runtime.InteropServices.Marshal.UnsafeAddrOfPinnedArrayElement(byteArrayOriginal, 0);

                Mat matImgSrc = new Mat(ptrDataSrc);
                Mat matImgDst = new Mat();
                Cv2.MedianBlur(matImgSrc, matImgDst, 9);
                matImgDst.SaveImage(@"C:\Users\IPTE40\Desktop\OpenCV\View2_median_blur.bmp");

                matImgSrc.Dispose();
                matImgDst.Dispose();

                bmpSrc.UnlockBits(bmpDataSrc);
            }
        }

Cv2.MedianBlur(matImgSrc, matImgDst, 9);我收到错误的行中(尝试读取或写入受保护的内存)

拜托,有人可以帮助我吗?

谢谢你和问候。

4

0 回答 0