PythonのOpenCVで特定の画像と同じサイズの黒塗り+特定領域の白塗り画像を作成する

開発環境は、Windows7 Professional(32bit) + Python 2.7.10.12+OpenCV 3.4.0。

・seemless_cloningを使うためにマスク画像を作成したかったのでメモ。

・今回、自分が使用した画像は、1956(幅)×796(高さ)の画像。

# -*- coding:utf-8 -*-

import numpy as np
import cv2

image = cv2.imread("0.jpg") # 同じサイズで黒塗りしたい画像を読み込む
imagearray = np.zeros((image.shape[0],image.shape[1],image.shape[2]),np.uint8)
# 特定領域だけ白く塗りつぶすようにする
# 左上から時計周りに描画する
count = np.array([[30,30],[30,60],[60,60],[60,30]])
cv2.fillPoly(imagearray, pts=[count], color=(255,255,255))

# 複数個所作りたければ、もう1回領域を定義し、埋める
# ただし、画像の範囲外を飛び出した定義をしないことに注意
count = np.array([[300,300],[300,330],[330,330],[330,300]]) 
cv2.fillPoly(imagearray, pts=[count], color=(255,255,255))

cv2.imwrite("blank.jpg", imagearray) # 適当で被らない画像名で保存

完成した画像がこちら、
f:id:k01ken:20171230154508j:plain

参考リンク
OpenCV3とNumpyでブランク画像を作る - Pythonの学習の過程とか