画像合成で使う緑色背景の色を変更 Python

画像合成で使う緑色背景の色をからに変換するPythonプログラムをColaboratoryで実行した様子の解説とプログラミングコード、変換した様子を投稿をします。

この投稿ではWindowsに標準で搭載されているペイントを使って緑色背景のRGB(赤、緑、青)を数値で確認したので、その確認する方法がこちら画像合成で使う画像の色を数値で確認する方法の投稿になります。

目次

・背景色を緑から青に変換した様子

・背景の色を変換するプログラム


背景色を緑から青に変換した様子

画像の手の部分を除いた、背景の色を緑から青に変換した様子になります。
上の画像は緑色から青色に変化した様子になりますが、この投稿の下に緑色から白色に変換した様子も載せています。

背景の色を変換するプログラム

色を変換するプログラムの説明をします。
まず、cv2.imread関数で画像を読み込むためにドライブをマウントします。そして、画像を読み込み[:2]で画像の縦と横にあたるデータを取り出し、変数height,widthに代入しています。それから、plt.imshow関数で表示するためにcv2.cvtColorでBGRからRGBに変換しています。import cv2(OpenCV)のcv2.imread関数で画像を読み込むと色の順番がRGB(赤、緑、青)ではなくBGR(青、緑、赤)になります。

そして、下のfor文縦、横(height,width)のデータを渡しb, g, r = back_copy[x, y]で画像の色、BGR(青、緑、赤)を数値(0~255)で取り出しています。その取り出した数値の中で、緑色背景の緑の部分をif文でチェックし青色に(255,0,0)変換します。

このif文でチェックするときのBGR(青、緑、赤)の値はペイントを使って確認した値になります。ペイントで画像の緑の部分を3ヶ所くらい確認したところ、b(青)80~130,g(緑)200~255,r(赤) 0~50だったので、if (b >= 80 and b <= 130) and (g >= 200 and g <= 255) and (r >= 0 and r <= 50):の場合、back_copy[x,y]=255,0,0 で青色に変換します。最後にplt.imshow関数で緑から青に変換した画像を表示します。

上のプログラムには載せていませんが、変換した画像の保存は

cv2.imwrite(“./drive/My Drive/実行しているフォルダ名/
保存する名前.jpg”,back_copy)

で保存しました。

↓実行結果↓


背景を白色にするときは、 back_copy[x,y]=255,255,255にすれば白色になります。