2017-02-25 2 views
0

이미지와 그 이미지에서 픽셀을 선택하는 마스크가 있습니다. 이 픽셀의 목록을 만들고 scipy.kmeans를 사용하여 클러스터 분석을 수행하고 싶습니다. 는 더 좋은 방법이 있나요 (예를 들어, 내가 모르는 무슨 기능) 사용이마스크로 선택한 픽셀 목록을 작성하십시오.

pixels = [] 
for irow,mrow in zip(img,mask): 
    pixels += [pixel for pixel,mbyte in zip(irow,mrow) if mbyte==255] 
+0

'픽셀 IMG = [마스크 == 255]'또는'화소 = 목록 (IMG [마스크 == 255])' – falsetru

답변

0

보다 numpy-boolean or "mask" index array :

>>> import numpy as np 
>>> img = np.array([[1, 2, 3], 
...     [4, 5, 6]]) 
>>> mask = np.array([[0, 255, 0], 
...     [255, 0, 0]]) 
>>> img[mask == 255] 
array([2, 4]) 

대신 numpy.arraylist를 원하는 경우가에 list를 사용 Conver 유럽 결과 :

>>> list(img[mask == 255]) 
[2, 4] 
+0

매우 청초한, 고맙습니다. –

+0

@HaydonBerrow, 여러분 안녕하세요. 해피 파이썬 프로그래밍. – falsetru

관련 문제