이미지를 0과 1의 다차원 배열로 변환하고 싶습니다. 이미지가 될 것이다 :이미지를 0과 1의 다차원 배열로 변환하는 방법이 있습니까?
난 '블랙'1로서 저장되고 및 '흰색'이 0 어레이로서 저장되고 함께 배열로 이미지를 저장하는 wan't. 배열은 8 행 6 열이됩니다.
int[,] imgArray = new int[8,6];
C#에서이를 수행 할 수있는 방법이 있습니까?
이미지를 0과 1의 다차원 배열로 변환하고 싶습니다. 이미지가 될 것이다 :이미지를 0과 1의 다차원 배열로 변환하는 방법이 있습니까?
난 '블랙'1로서 저장되고 및 '흰색'이 0 어레이로서 저장되고 함께 배열로 이미지를 저장하는 wan't. 배열은 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");
}
}
코드를 테스트 해본 결과, System.Diagnostics.Debug.WriteLine ("요소 ({0}, {1}) = {2}", i, j, imgArray [i, j]); 출력에 imgArray를 표시합니다. 출력 표시한다 'System.InvalidOperationException'와 배열의 함유량이 0의 요소 (0,0) = 0 요소 (0,1) 0 요소 (0,2) = 0 = 요소를 표시한다 (0 , 3) = 0 요소 (0,4) = 0 .... – Sujal
잘못된 연산 예외 메시지가 내 코드의 예외 메시지와 일치합니까? 나는 또한 내가 가지고있는 몇 가지 코딩 오류를 수정했습니다. – Lukazoid
@Sujal 새롭게 업데이트 된 답변을 시도해보십시오. Color 인스턴스 대신 ARGB 값을 비교해야합니다. MSPaint에서 PNG 이미지로 테스트하고 테스트했습니다. – Lukazoid
이미지가 어떤 형식을? (비트 맵?) –
이미지가 'png'형식입니다. 그러나 비트 맵이 아닌 비트 맵 형식을 사용할 수 있습니다. 나는 아래의 코드를 @Lukazoid에 의해 포토샵에서 6 * 8 비트 맵을 직접 만들어 테스트했다. 그러나 imgArray의 모든 것이 0으로 삽입 되었기 때문에 검정색이 1로 보이지 않았다. – Sujal