Image Morphing은 한 이미지에서 다른 이미지로 부드럽게 전환하는 기술
두 image간에 대응되는 특징점들을 추출하여 mesh를 만들고 이들을 이용하여 부드럽게 전환이 되도록하는 게 일반적이지만,
다음은 alpha-blending만을 이용한 아주 간단한 방법임.
https://dsaint31.me/mkdocs_site/DIP/cv2/ch01/dip_1_04/
Example
import cv2
import os
def f(x):
alpha = x/100
ret = cv2.addWeighted(img_0, alpha, img_1, 1-alpha,0)
cv2.imshow('img',ret)
d_path = os.path.dirname(__file__)
d_path = f'{d_path}/img'
fstr_0 = os.path.join(d_path,'face02.PNG')
fstr_1 = os.path.join(d_path,'man_face.jpg')
img_0 = cv2.imread(fstr_0)
img_1 = cv2.imread(fstr_1)
img_0 = cv2.resize(img_0, dsize=(img_1.shape[1],img_1.shape[0]), interpolation= cv2.INTER_AREA)
init_ap = 50
alpha = init_ap/100
cv2.namedWindow('img')
cv2.createTrackbar('p', 'img', init_ap, 100, f)
ret = cv2.addWeighted(img_0, alpha, img_1, 1-alpha,0)
cv2.imshow('img',ret)
while(True):
k = cv2.waitKey(10) & 0xFF
if k == 27: # esc
break
if cv2.getWindowProperty('img', cv2.WND_PROP_VISIBLE) < 1:
break
cv2.destroyAllWindows()
'Programming > DIP' 카테고리의 다른 글
[DIP] CV2.INTER_AREA (0) | 2024.09.22 |
---|---|
[DIP] Interpolation (on Image) (2) | 2024.09.22 |
[OpenCV] bitwise op. (0) | 2024.09.22 |
[DIP] Image 다루기: 기본편 1; (Summary) (0) | 2024.09.22 |
[DIP] cv2.imwrite (1) | 2024.09.22 |