PythonとOpenCVを使用して、2つの画像をオーバーレイ(重ね合わせ)する方法について説明します。この記事では、透明なPNG画像を別の画像の上にオーバーレイする方法を中心に解説します。
まず、2つの画像を読み込みます。ここでは、背景画像をbackground.png
、オーバーレイする画像をoverlay.png
とします。
import cv2
background = cv2.imread('background.png', cv2.IMREAD_UNCHANGED)
overlay = cv2.imread('overlay.png', cv2.IMREAD_UNCHANGED)
次に、各画像のアルファチャンネル(透明度)を0-255の範囲から0-1の範囲に正規化します。
alpha_background = background[:,:,3] / 255.0
alpha_overlay = overlay[:,:,3] / 255.0
そして、各色チャンネルに対して以下の計算を行います。
for color in range(0, 3):
background[:,:,color] = alpha_overlay * overlay[:,:,color] + \
alpha_background * background[:,:,color] * (1 - alpha_overlay)
最後に、アルファチャンネルを調整し、その値を0-255の範囲に戻します。
background[:,:,3] = (1 - (1 - alpha_overlay) * (1 - alpha_background)) * 255
以上で、画像のオーバーレイが完了します。結果を表示するには以下のコードを使用します。
cv2.imshow("Composited image", background)
cv2.waitKey(0)
この方法を使用すれば、PythonとOpenCVを使用して2つの画像を簡単にオーバーレイすることができます。。.