Python3 OpenCV3で平均値画像(Alpha Blending)を作成

2枚の画像を透過させて合成するような感じ。

[amazonjs asin="4061538225″ locale="JP" title="OpenCVによる画像処理入門 (KS情報科学専門書)"]

 

前提

ディレクトリ構成などはこことかこことか。

 

元画像

オレンジの画像(orange.jpg)とりんごの画像(apple.jpg)を合成する。
source/imageディレクトリに設置する。

apple

orange

 

addWeightedメソッドの使い方

平均値画像を求めるにはaddWeightedメソッドを使う。
addWeightedメソッドの使い方は以下のとおり。

[python]
cv2.addWeighted(img_src1, img_src1の重み付け, img_src2, img_src2の重み付け, ガンマ値)
[/python]

重み付け値はimg_src1とimg_src2のどちらを強調するかを指定する。
ちょうど中間にするには両方の値を0.5、img_src1の方を強調したい場合は0.7,0.3など。

ガンマ値はガンマ補正の値。大きくすると明るく(白っぽく) なる。

 

平均値画像の生成

平均値画像を生成する。
sourceディレクトリにalpha_blending.pyを作成する。

[python title="alpha_blending.pyの内容"]
# -*- coding: UTF-8 -*-

import cv2
import math
import numpy as np
import os

if __name__ == '__main__’:

# 画像の読み込み
img_src1 = cv2.imread("./image/apple.jpg", 1)
img_src2 = cv2.imread("./image/orange.jpg", 1)

img_ab = cv2.addWeighted(img_src1, 0.5, img_src2, 0.5, 0.0)

# 表示
cv2.imshow("Show ALPHA BLENDING Image", img_ab)
cv2.waitKey(0)
cv2.destroyAllWindows()

[/python]

実行してみる。

[shell]
(opencv_python)$ python alpha_blending.py
[/shell]

スクリーンショット 2015-07-14 22.28.31

 

おまけ(ゴーストダンボー)

以下の2つの画像を合成してみた(dambo1.jpg, dambo2.jpg)。

dambo1

dambo2

すると、

スクリーンショット 2015-07-14 22.48.51

ダンボーが透明に。