元画像
一部分を切り抜いて、縮小する
縮小した部分を拡大する
-> モザイクがかかったように見える(ドットを縮小して拡大したため)
これをプログラムで書く。
mosaic.py
import cv2 def mosaic(img, rect, size): # rectはモザイクをかける領域 (x1, y1, x2, y2) = rect w = x2 - x1 # width h = y2 - y1 # height i_rect = img[y1:y2, x1:x2] i_small = cv2.resize(i_rect, (size, size)) # 対象領域を指定したサイズに縮小 i_mos = cv2.resize(i_small, (w, h), interpolation=cv2.INTER_AREA) # 対象領域に拡大 img2 = img.copy() img2[y1:y2, x1:x2] = i_mos # 埋め込み return img2
app.py
import cv2 from mosaic import mosaic as mosaic img = cv2.imread("cat.jpeg") mos = mosaic(img, (50, 50, 400, 400), 10) cv2.imwrite("cat-mosaic.png", mos)
なんやこれ、めっちゃ面白いな。
mosaic(img, rect, size): のsizeの値を小さくすると、モザイクが荒くなります。