有没有办法将图像转换为0和1的多维数组

问题描述:

我想用0和1将图像转换成多维数组。 图像将是:有没有办法将图像转换为0和1的多维数组

enter image description here

我wan't该图像存储到与“黑”被存储为1和“白”被存储为0阵列中的阵列。该阵列是8行6列:

int[,] imgArray = new int[8,6]; 

有没有办法在C#来实现这一目标?

+0

什么格式的图像是? (位图?) – 2013-03-09 21:51:25

+0

图像是'png'格式。不是位图,但是,我可以使用位图格式。我只是通过@Lukazoid测试下面的代码,通过在photoshop中自己创建一个6 * 8位图,但它似乎并没有变成黑色,因为imgArray中的所有内容都被插入为0. – Sujal 2013-03-10 12:14:37

如果您使用的是Bitmap,你可以填充该数组像这样:

var bitmap = new Bitmap(@"C:\MyImage.png"); 
var imgArray = new int[bitmap.Width,bitmap.Height]; 
var blackArgb = Color.Black.ToArgb(); 
var whiteArgb = Color.White.ToArgb(); 
for (var i = 0; i < bitmap.Width; ++i) 
{ 
    for (var j = 0; j < bitmap.Height; ++j) 
    { 
     var pixelCol = bitmap.GetPixel(i, j); 
     if (pixelCol.ToArgb() == blackArgb) 
     { 
      imgArray[i, j] = 1; 
     } 
     else if (pixelCol.ToArgb() == whiteArgb) 
     { 
      imgArray[i, j] = 0; 
     } 
     else 
      throw new InvalidOperationException("Pixel color must be black or white"); 
    } 
} 
+0

我测试了代码并尝试显示显示输出中的imgArray: System.Diagnostics.Debug.WriteLine(“Element({0},{1})= {2}”,i,j,imgArray [i,j]); 输出显示一个 'System.InvalidOperationException' 和阵列的内容被显示0的 元素(0,0)= 0 元素(0,1)= 0 元素(0,2)= 0 元素(0 ,3)= 0 元素(0,4)= 0 .... – Sujal 2013-03-10 11:02:41

+0

无效操作异常消息是否与我的代码中的消息匹配?我也修复了一些我有的编码错误。 – Lukazoid 2013-03-10 12:53:00

+0

@Sujal尝试我的新更新答案。您必须比较ARGB值而不是Color实例。尝试使用MSPaint的PNG图像进行测试。 – Lukazoid 2013-03-10 13:00:11