OpenCVを使わずにNumPyのみを使って特定の色を抽出したいです。具体的には以下のコードと等価のコードをfor文を使わずに実装したいのですがどのようにすればよいでしょうか?
Python
1lcol=np.array((23,22,174)) 2hcol=np.array((77,77,255)) 3 4def extract_color_from1(img_array) : # 2560x1440の画像で6000ms程度 5 height=np.shape(img_array)[0] 6 width=np.shape(img_array)[1] 7 for y in range(0,height) : 8 for x in range(0,width) : 9 for i in range(0,3) : 10 if lcol[i]<img_array[y,x][i]<hcol[i] : 11 pass 12 else : 13 img_array[y,x]=[0,0,0] 14 return img_array 15
おそらく, np.whereやnp.all関数などを使えばよいのだと思いますが思いつきません。
Python
1lcol=np.array((23,22,174)) 2hcol=np.array((77,77,255)) 3 4def extract_color_from2(img_array) : 5 #試行1: mask=np.all((lcol<=img_array) & (img_array<=hcol),axis=2) # いい感じだがうまくいかない。この先が思いつかない。 6 #試行2: mask=np.where(((lcol<=img_array) & (img_array<=hcol)), img, [0,0,0]) # 次元がずれて予想通りの結果にならない。 7 8 return img_array
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/01/09 09:15 編集