Pythonプログラムの画像合成を交えて色を数値で確認する方法

ペイントを使った画像合成で使う画像の色を数値で確認する方法補足投稿として、Pythonプログラムの画像合成を交えて、色を数値で確認する方法を紹介します。

PythonプログラムはColaboratoryで実行しています。

※import cv2(OpenCV)のcv2.imread関数で画像を読み込むと色の順番がRGB(赤、緑、青)ではなくBGR(青、緑、赤)になるので、この投稿ではBGRの順番で書きます。

目次

・画像合成で使う画像

・画像合成プログラムと色を数値で確認

・色を数値で確認してからプログラムを変更

画像合成で使う画像

画像合成プログラム

画像合成プログラムについてはこちら↓の投稿で詳しく説明しています。

Pythonを使った画像合成をColaboratoryで実行

この投稿では画像合成プログラムの条件(if文)について説明します。

このプログラムの条件(if文)は緑色の背景に女性が写っている画像の中でBGRの数値が、B(青)=60~100 G(緑)=100~180 R(赤)=1~10の場合はcontinueをして、ビル風景に背景の緑色を合成しないようにしています。

B(青)=60~100 G(緑)=100~180 R(赤)=1~10はペイントで背景の緑色を3箇所くらい確認して出した値で、だいたいこのくらいの値が背景の緑色になっているとして設定してます。

※import cv2(OpenCV)のcv2.imread関数で画像を読み込むと色の順番がRGB(赤、緑、青)ではなくBGR(青、緑、赤)になるので、plt.imshowで表示するときはcv2.cvtColorでBGRからRGBに変換します。

↓実行結果↓

実行結果を見てわかるように、下の方だけ緑色の背景がビル風景に合成されています。

このようになった原因は背景の緑色を合成しないように設定したB(青)=60~100 G(緑)=100~180 R(赤)=1~10の範囲が間違っていたということなので、もう一度、緑色が残っていた部分をペイントで確認します。

色を数値で確認してからプログラムを変更

ペイントで背景の緑色が残っている箇所のBGR(青緑赤)を数値で確認します。

ペイントで確認すると、条件(if文)の青色がペイントで確認した値よりも高く設定されていたのでb=60~100から少し低くしてb=40~100に設定し直します。

if文の条件だと

if (b >= 60 and b <= 100) and (g >= 100 and g <= 180) and (r >= 0 and r <= 10):

から

if (b >= 40 and b <= 100) and (g >= 100 and g <= 180) and (r >= 0 and r <= 10):
に変更します。

if (b >= 40 and b <= 100) and (g >= 100 and g <= 180) and (r >= 0 and r <= 10):にしたものが下になります。

下の方にあった緑色がビル風景に合成されていないです。