yamaken1343’s blog

技術ブログもどき

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)