Numpy 画像にドーナツ型のマスクをかける方法


この写真を使って、3種類のマスクをかけてみようと思います。


画像の外側にマスク。境界はぼかし処理を実施しています。


画像の内側にマスク。


最後は二つのマスクを組み合わせてドーナツ型(リング型)にしてみました。

サンプルプログラム

#ライブラリのインポート
import cv2
import numpy as np

#画像読み込みm
img = cv2.imread('photo.jpeg')

#ドーナツ型マスク
mask = np.zeros_like(img)
cv2.circle(mask, (512, 342), 400, (255, 255, 255), thickness=-1)
cv2.circle(mask, (512, 342), 200, (0, 0, 0), thickness=-1)
mask_blur = cv2.GaussianBlur(mask, (99, 99), 0)
img_mask = img * (mask_blur / 255 )

#外側、または内側のみのマスクは以下
"""
#外側マスク
mask = np.zeros_like(img)
cv2.circle(mask, (512, 342), 300, (255, 255, 255), thickness=-1)
mask_blur = cv2.GaussianBlur(mask, (99, 99), 0)
img_mask = img * (mask_blur / 255 )

#内側マスク
mask = np.zeros_like(img)
cv2.circle(mask, (512, 342), 300, (255, 255, 255), thickness=-1)
mask_blur = cv2.GaussianBlur(mask, (99, 99), 0)
mask_blur2 = cv2.bitwise_not(mask_blur)
img_mask = img * (mask_blur2 / 255 )
"""
cv2.imwrite('mask_out.jpg', img_mask)
タイトルとURLをコピーしました