C# 有没有办法将图像转换为0';s和1';s

C# 有没有办法将图像转换为0';s和1';s,c#,winforms,image-processing,C#,Winforms,Image Processing,我想将图像转换为具有0和1的多维数组。 图像将是: 我不想将此图像存储到数组中,数组中的“黑色”存储为1,“白色”存储为0。该数组将由8行6列组成: int[,] imgArray = new int[8,6]; 有没有办法在C#中实现这一点?如果您使用的是,您可以这样填充数组: var bitmap = new Bitmap(@"C:\MyImage.png"); var imgArray = new int[bitmap.Width,bitmap.Height]; var blackAr

我想将图像转换为具有0和1的多维数组。 图像将是:

我不想将此图像存储到数组中,数组中的“黑色”存储为1,“白色”存储为0。该数组将由8行6列组成:

int[,] imgArray = new int[8,6];
有没有办法在C#中实现这一点?

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

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");
    }
}
var bitmap=新位图(@“C:\MyImage.png”);
var imgArray=newint[bitmap.Width,bitmap.Height];
var blackArgb=Color.Black.ToArgb();
var whiteArgb=Color.White.ToArgb();
对于(变量i=0;i
图像的格式是什么?(位图?)图像为“png”格式。不是位图,但是,我可以使用位图格式。我刚刚通过@Lukazoid自己在photoshop中创建了一个6*8位图来测试下面的代码,但它似乎没有变黑为1,因为imgArray中的所有内容都被插入为0。我测试了代码,并尝试在输出中显示imgArray,方法是:System.Diagnostics.Debug.WriteLine(“元素({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请尝试我新的更新答案。您必须比较ARGB值,而不是颜色实例。使用MSPaint中的PNG图像进行了尝试和测试。