画像(正確にはndarray)で0以外が入っているindexを取り出します
こんな感じ
import numpy as np img = np.zeros((200,100), bool) #画像作成 img[50,50] = True img[50,20] = True result = np.nonzero(img) print result >>(array([50, 50], dtype=int64), array([20, 50], dtype=int64)) #使用例 print img[result[0][0], result[1][0]] >>True
Falseが0扱いになります。
結果はこの場合2次元配列になっています。
画像的にはimg[y,x]になってるので注意。
あと、ndarrayは[y,x]的な書き方できますけどリストはできない。
これRGBだったらどうなるんですかね?
こうなります
img = np.zeros((200,100,3), np.uint8) img[40,60] = [10,0,60] img[50,60] = [80,90,0] result = np.nonzero(img) print result >>(array([40, 40, 50, 50], dtype=int64), array([60, 60, 60, 60], dtype=int64), array([0, 2, 0, 1], dtype=int64)) #取り出し例 print img[result[0][0], result[1][0], result[2][0]] >>10 #書きなおすと print print img[40,60,0] >>10
…なんか難しくなった感あります
RGBの値を2つのピクセルにそれぞれ入れました。
[10,0,60],[80,90,0]です。
この中に0でない値は4つあります。
なのでresultの各リストの長さは4です。