質問: pythonでBB素材の青色を指定して抜き出し素材だけを出力する方法があれば教えてください。
回答: 特定の色を透過するのであれば、OpenCV の floodFill() を使うとできます。 関数の使い方は以下を参考にしてください。 参考リンク 指定した色を透過する方法 ``` import cv2 import matplotlib.pyplot as plt import numpy as np # 画像を読み込む。 img = cv2.imread('sample1.jpg') # 幅、高さとも2ピクセルずつ大きいサイズのマスクを作成する。 h, w = img.shape:2] mask = np.zeros((h + 2, w + 2), dtype=np.uint8) # 塗りつぶしを実行する。 flags = 4 | 255 << 8 | cv2.FLOODFILL_MASK_ONLY print(bin(flags)) # 0b101111111100000100 cv2.floodFill( img, mask, seedPoint=(2, 2), newVal=(0, 0, 255), loDiff=(10, 10, 10), upDiff=(10, 10, 10), flags=flags) # マスクの値が 255 の画素に対応する画素の透過度を 0 (透明) にする。 rgba = cv2.cvtColor(img, cv2.COLOR_BGR2BGRA) # アルファチャンネル追加 mask = mask[1:-1, 1:-1] # マスク作成時に追加した周囲1ピクセルは除く rgba[mask==255] = 0 # マスクの値が 255 の画素は (0, 0, 0, 0) にする。 # 画像を保存する。 cv2.imwrite('result.png', rgba) ``` ![イメージ説明 !イメージ説明 ブルーバックということなので、クロマキー合成をやりたいのでしょうか? 背景のRGB値が同一であればきれいに透過できますが、実際カメラで撮影した画像ですと輝度値にむらがでるので、青い部分が少々残ってしまいます。 もっときれいに抜きたい場合は、クロマキー合成ソフトを使ってください。