EmguCV - 从非托管数据创建图像

时间:2011-05-09 19:34:01

标签: c# image access-violation emgucv

我正在使用EmguCV,我有一个字节类型的灰度矩阵,大小为640x480,矩阵的每个元素都是255或0.现在我需要从中制作一个图像。我找到的最好的构造函数看起来像这样:

Image<Gray,byte>(int width, int height, int stride, IntPtr scan0)

我从矩阵中得到了第一个,第二个和第四个参数,然后我发送了640个步幅。但它给了我一个

Access violation exception: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

我会感激任何帮助。

1 个答案:

答案 0 :(得分:1)

你很可能把错误的东西作为指针。错误的步幅只会导致图像内容出现失真。在你的情况下640将是正确的值(只是再次使用宽度),因为步幅总是表示内存中一个图像行的长度(在你的情况下为640字节)。我可以猜测,但不要尝试使用矩阵的_ptr指针。这可能听起来合乎逻辑,但是人们会指向整个矩阵对象,而不仅仅是数据(你想要的)。现在没有检查,我相信你能够使用矩阵的copyTo()将内容复制到图像中(如果这对你的用例来说已经足够了)。