Python OpenCV3でマスク合成(空飛ぶダンボー)

2017年5月26日

背景となる画像から貼り付ける画像の部分を切り抜いて、貼り付ける画像を貼り付ける。
ちょっといつもよりはフクザツ。

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

 

前提

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

 

元画像

空の画像(sora.jpg)にダンボーの画像(dambo3.jpg) を貼り付ける。

sora

 

dambo3

 

マスク合成

マスク合成をやってみる。
sourceディレクトリにmask_composition.pyを作成する。

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

import cv2
import math
import numpy as np
import os

if __name__ == '__main__’:

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

# ダンボー画像をグレースケール化
img2_gray = cv2.cvtColor(img_src2, cv2.COLOR_BGR2GRAY)

# マスク画像を生成するために二値化
img_maskg = cv2.threshold(img2_gray, 220, 255, cv2.THRESH_BINARY_INV)[1]

# マスク画像を生成する
img_mask = cv2.merge((img_maskg,img_maskg, img_maskg))

# img_src2からマスク画像の部分だけを切り出す
img_src2m = cv2.bitwise_and(img_src2, img_mask)

# マスク画像の白黒を反転
img_maskn = cv2.bitwise_not(img_mask)

# img_src1からimg_msknの部分を切り出す
img_src1m = cv2.bitwise_and(img_src1, img_maskn)

# img_src1、img_src2の切り出し画像を合成
img_dst = cv2.bitwise_or(img_src1m, img_src2m)

# 表示
cv2.imshow("Show MASK COMPOSITION Image", img_dst)
cv2.waitKey(0)
cv2.destroyAllWindows()

[/python]

実行。

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

<div style="clear: both;">

 

雑な感じだけど、飛んでる。