我正在尝试使用Emgu CV进行一些图像处理。
我有一个字节[]中的灰色图像的原始像素数据。我知道图片的大小和类型。
我首先创建一个已知大小和类型的图像宽度,然后我想将日期加载到图像中(我经常在C++OpenCV中这样做)。
Image<Gray, Byte> image = new Image<Gray, byte>(width, height);
image.Bytes = data;
但这幅图像总是有点"被切割和困惑在一起"。它适用于宽度%4=0的图像。这就是为什么我认为这是某种"内存对齐"问题。
你们中有人遇到这个问题并知道如何解决吗?
谢谢,Sebastian
原始数据和图像。字节是连续的内存。但数组的每一行都占用Width字节,但Image的每一行都占用Image.widthStep(我谈论的是IPLImage结构,不知道Emgu的特殊性)字节,这个值对齐了4个字节(99=>100等)
因此,您可以将第Y行的Width字节复制到bytes[Y*widthStep](高度时间),或者创建特殊的4字节对齐数组来收集原始数据,然后将其分配给Image。字节
尝试使用另一个构造函数:
Image<Gray, Byte> image = new Image<Gray, byte>(width, height, bytesNum, data);
另请参阅http://www.emgu.com/wiki/files/2.1.0.0/html/1d51c1ed-6f5e-65f9-206c-ef2d59c5c117.htm