OpenCV で濃淡をはっきりさせるために、「ぼかしを引く」という操作をする。元画像に「ぼかし」を混ぜると輪郭が曖昧になるが、逆に「ぼかし」を引くと輪郭を強調できる。コードはぼかしの記事とほぼ同じ。パラメータ v を負の値に設定して画像を編集する。
import cv2
import sys
import numpy as np
# 画像を加工する
def mkimg(img):
img2 = b(img,20,-0.8)
return img2
# ぼかす
def b(img1,i=4,v=1.):
img2 = cv2.blur(img,(i,i))
img1f = np.float32(img1)
img2f = np.float32(img2)
return ct(img1f * (1. - v) + img2f * v)
# 値を0-255にclipして、typeをuint8にする
def ct(img):
return np.clip(img,0,255).astype(np.uint8)
file_name = sys.argv[1]
img = cv2.imread(file_name)
img2 = mkimg(img)
cv2.imwrite(file_name.replace(".",".out."),img2)


濃淡を強調すると、画像は硬く、はっきりとした印象になる。のっぺりとした部分はザラザラし、ノイズが強調されることもある。


パラメータを極端な値にすると、印象が強くなる。上記画像では、広さi = 3000 比率 v = -2.0 とした。
コメント