【发布时间】:2013-06-30 05:37:35
【问题描述】:
我已经使用了 LockBits 和 UnlockBits 函数,并将 Image 的字节数组转换为一维数组。 (仅考虑黑白/二值化图像)
有没有办法把它变成一个二维数组(大小图像高度和宽度)?所以我可以将数组写入“.txt”文件并查看它?
我用来将图像转换为一维数组的代码如下:
Public void function(Bitmap image){
{
byte[] arr1D;
byte[] arr2D;
BitmapData data = image.LockBits(new Rectangle(0, 0, img_w, img_h), ImageLockMode.ReadOnly, image.PixelFormat);
try
{
IntPtr ptr = data.Scan0;
int bytes = Math.Abs(data.Stride) * image.Height;
byte[] rgbValues = new byte[bytes];
arr1D = rgbValues;
Marshal.Copy(ptr, rgbValues, 0, bytes);
}
finally
{
image.UnlockBits(data);
}
}
由于图像是二进制的,Byte 数组的值只有 255 和 0。
除了将整个图像提取到一维数组之外,是否有任何方法/代码可以将像素逐行提取到二维数组中,我可以将其写入文本文件并稍后查看?
编程语言:C#
示例:(如果将值 255 替换为 1)
结果输出: 一维数组:(6px X 6px 图像)
0 0 1 1 0 0 0 0 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 0 0 1 1 0 0
预期输出: 二维数组:(6px X 6px 图像)
0 0 1 1 0 0
0 0 1 1 0 0
1 1 1 1 1 1
1 1 1 1 1 1
0 0 1 1 0 0
0 0 1 1 0 0
有人可以帮我编写 C# 代码吗?
【问题讨论】:
-
可以将一维数组写入N维文件;这只是查看它们的问题。在第一行写入 W 个条目,然后添加一个换行符,然后在下一行写入 W 个条目,依此类推,直到写入 H 行。写入条目的总数为 W*H(或一维数组的大小)。
-
@user2246674 : 请问您能帮我输入代码 sn-p 吗?
标签: c# arrays image-processing bitmap bytearray