有没有办法将图像转换为0和1的多维数组
我想用0和1将图像转换成多维数组。 图像将是:有没有办法将图像转换为0和1的多维数组
我wan't该图像存储到与“黑”被存储为1和“白”被存储为0阵列中的阵列。该阵列是8行6列:
int[,] imgArray = new int[8,6];
有没有办法在C#来实现这一目标?
如果您使用的是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");
}
}
我测试了代码并尝试显示显示输出中的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
无效操作异常消息是否与我的代码中的消息匹配?我也修复了一些我有的编码错误。 – Lukazoid 2013-03-10 12:53:00
@Sujal尝试我的新更新答案。您必须比较ARGB值而不是Color实例。尝试使用MSPaint的PNG图像进行测试。 – Lukazoid 2013-03-10 13:00:11
什么格式的图像是? (位图?) – 2013-03-09 21:51:25
图像是'png'格式。不是位图,但是,我可以使用位图格式。我只是通过@Lukazoid测试下面的代码,通过在photoshop中自己创建一个6 * 8位图,但它似乎并没有变成黑色,因为imgArray中的所有内容都被插入为0. – Sujal 2013-03-10 12:14:37