OpenCV

virtual Bilbord(빌보드 전광판 사진 바꾸기)

728x90
import cv2
import numpy as np
from utils import get_four_points

img_src = cv2.imread("data/images/first-image.jpg", 1)
img_dst = cv2.imread("data/images/times-square.jpg", 1)

dst_size = img_dst.shape          # 가져올 사이즈는 img_dst 이미지 크기로 할거다.

# img_dst = np.zeros(dst_size, np.uint8)

# 월본 이미지로부터 4개의 점 바로 가져올 수 있다.
cv2.imshow("Image", img_src)
points_src = np.array([0,0, img_src.shape[1],0, img_src.shape[1],img_src.shape[0], 0,img_src.shape[0]])

points_src = points_src.reshape(4,2)

# 좌표를 우리가 바로 못구하니까, 마우스로 찍어서 구한다.
cv2.imshow("src image", img_src)
points_dst = get_four_points(img_dst)

h, status = cv2.findHomography(points_src, points_dst)

img_temp = cv2.warpPerspective(img_src, h, (dst_size[1], dst_size[0]))

cv2.imshow("Img dst", img_temp)

#타임스퀘어의 전광판 안쪽 영역을 0으로 바꿔준다.
# 좌표값이 float이기에 int로 변환해줘야함
cv2.fillConvexPoly(img_dst, points_dst.astype(int),0)

cv2.imshow('img to 0', img_dst)

img_result = img_dst + img_temp
cv2.imshow('result', img_result)

cv2.waitKey(0)
cv2.destroyAllWindows()

 

728x90

'OpenCV' 카테고리의 다른 글

desaturation  (0) 2021.04.20
hueHistogram  (0) 2021.04.20
perspective Correction(클릭해서 이미지 추출)  (0) 2021.04.20
homography_book  (0) 2021.04.20
rotate / warpAffine/ getAffine 이미지 돌리기  (0) 2021.04.20