src = cv2.imread('rose.bmp', cv2.IMREAD_GRAYSCALE)
src_f = src.astype(np.float32)
blr = cv2.GaussianBlur(src_f, (0, 0), 2.0)
dst = np.clip(2. * src_f - blr, 0, 255).astype(np.uint8)
dst 영상이 src에 비해 날카로운 느낌이 난다.
src = cv2.imread('rose.bmp', cv2.IMREAD_GRAYSCALE)
blr = cv2.GaussianBlur(src, (0, 0), 2)
def on_trackbar(pos):
alpha = cv2.getTrackbarPos('alpha x 10', 'dst')
dst = np.clip((1.0+alpha/10)*src - alpha/10*blr, 0, 255).astype(np.uint8)
cv2.imshow('dst', dst)
cv2.imshow('src', src)
cv2.namedWindow('dst')
cv2.createTrackbar('alpha x 10', 'dst', 0, 10, on_trackbar)
on_trackbar(0)
cv2.waitKey()
cv2.destroyAllWindows()
트랙바를 움직이면 샤프닝이 변하는 것을 관찰할 수 있다.
(createTrackbar
에 정수 인자만 입력할 수 있으므로, 0과 10으로 설정하고 대신 실제 alpha는 0과 1 사이에서 움직이게 하였다.)
src = cv2.imread('rose.bmp')
src_ycrcb = cv2.cvtColor(src, cv2.COLOR_BGR2YCrCb)
# 실수 형태로 연산(float32)
src_f = src_ycrcb[:, :, 0].astype(np.float32)
blr = cv2.GaussianBlur(src_f, (0, 0), 2.0)
# 최종 결과는 정수로(uint8)
src_ycrcb[:, :, 0] = np.clip(2. * src_f - blr, 0, 255).astype(np.uint8)
dst = cv2.cvtColor(src_ycrcb, cv2.COLOR_YCrCb2BGR)