opencv python で特定の色を抽出する
特定の色を持つ画素を抽出するだけでなんかえらい時間かかったのでメモ
結論
# アルファチャンネルがない場合 (img == (B, G, R)).all(axis=2) # あるばあい (img == (B, G, R, A)).all(axis=2)
でtrueかfalseをもつ配列が得られる
使いかたの例
白を黒に置き換え
img[(img == (255, 255, 255)).all(axis=2)] = (0,0,0)
白い画素にアルファチャンネルを付与
rgba = cv2.cvtColor(img, cv2.COLOR_BGR2BGRA) rgba[..., 3] = np.where((img == (255, 255, 255)).all(axis=2), 0, 255)