OpenCVとPythonによる画像の透過オーバーレイの方法

OpenCVは画像処理用ライブラリです。このライブラリを利用するためのPython用パッケージもあり、Pythonから手軽に画像処理プログラムが生成できます。今回はOpenCVPythonを利用して画像を透過オーバーレイする方法を記載します。

解説

addWeighted関数

画像のオーバーレイを実現するためにaddWeighted関数を利用します。この関数では、二つの配列を元に重み計算して新たな配列を生成します。オーバーレイ画像の透明度については配列数式のbetaの値で調整してください。

オーバーレイ画像

オーバーレイ画像には透過PNG画像を利用しないでください。私が確認した時点で上手く読み取りできないもしくは画像が粗くなる等の不具合がありました。代わりに透明色となる部分については黒色、つまりRGB(0, 0, 0)を設定してください。addWeighted関数の配列数式でRGBをそのまま配列値として用いるため、黒色は[0, 0, 0]となります。そのため、実質的に透明色となります。

サンプル

パッケージダウンロード

$ pip3 install opencv-python

サンプル実行

以下が入力画像です。予めダウンロードしておいてください。

lena.png

opencv-logo.png

import cv2
src1 = cv2.imread('lena.png')
src2 = cv2.imread('opencv-logo.png')
dst = cv2.addWeighted(src1, 1, src2, 0.8, 0)
cv2.imshow("output", dst)
cv2.waitKey(0)

以下の画像が表示されれば成功です。