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