2016-09-13 4 views
0

나는 numpy 배열로 이미지를 변환 할 때 형식이 184 x 184 x 4 인 PNG 파일을 가지고 있습니다. 이미지는 184 x 184 x 4이고 각 픽셀은 RGBA 형식 및 따라서 3D 배열.PNG 이미지를 2D 배열로 변환

이것은 B & W 이미지이며 픽셀은 [255, 255, 255, 255] 또는 [0, 0, 0, 255]입니다.

이 픽셀을 [255, 255, 255, 255] 또는 [0, 0, 0, 255]인지에 따라 픽셀이 1 또는 0 인 184 x 184 2D 배열로 변환하고 싶습니다. .

모든 아이디어를 직접 변환하는 방법.

답변

0

비교를 수행하여 boolean array을 얻은 다음 유형 변환을 사용하여 int array으로 변환하면됩니다. 따라서 비교를 위해 가장 간단한 방법은 255과 비교하여 마지막 축을 따라 ALL 일치를 확인하는 것입니다. 이는 [255, 255, 255, 255]을 확인하는 것과 같습니다. 따라서, 하나의 접근 방식과 같이 될 것이다 -

((arr == 255).all(-1)).astype(int) 

샘플 실행 -

In [301]: arr 
Out[301]: 
array([[[255, 255, 255, 255], 
     [ 0, 0, 0, 255], 
     [ 0, 0, 0, 255]], 

     [[ 0, 0, 0, 255], 
     [255, 255, 255, 255], 
     [255, 255, 255, 255]]]) 

In [302]: ((arr == 255).all(-1)).astype(int) 
Out[302]: 
array([[1, 0, 0], 
     [0, 1, 1]]) 
+0

위는 매력처럼 작동했습니다. 고맙습니다. –

1

하는 경우가 정말 배열의 두 값이 말한대로, 단지 규모와 차원 중 하나를 반환 :

(arr[:,:,0]/255).astype(int) 
관련 문제