我想用0和1將圖像轉換成多維數組。 圖像將是:有沒有辦法將圖像轉換爲0和1的多維數組
我wan't該圖像存儲到與「黑」被存儲爲1和「白」被存儲爲0陣列中的陣列。該陣列是8行6列:
int[,] imgArray = new int[8,6];
有沒有辦法在C#來實現這一目標?
我想用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