제너럴공국

OpenCV-python 응용 <1. 추억 엽서 만들기 프로젝트> 본문

컴퓨터공학/opencv-python

OpenCV-python 응용 <1. 추억 엽서 만들기 프로젝트>

제너럴3세 2020. 5. 18. 14:56
반응형

#사용 버전

cv2 3.4.2
numpy 1.18.1
파이썬 3.5.6


import cv2
import numpy as np

#image 지정
filename = "hy"

#image 읽기 + 비율 유지하며 resize
img = cv2.imread("img/"+filename+".jpg")
ratio = 700.0 / img.shape[1]
dim = (700, int(img.shape[0] * ratio))
img = cv2.resize(img, dim, interpolation=cv2.INTER_AREA)

#가우스 필터 +Canny edge, 사진별 threshold 지정 필요
img = cv2.GaussianBlur(img, (5, 5), 0)
#edge = cv2.Canny(img, 50, 70)
edge = cv2.Canny(img, 80, 200)

#이미지 병합하기 + 편지지 붙여넣기
size_image= np.shape(edge)
blank_image = np.zeros((size_image[0],size_image[1]), np.uint8)
i = 150
cv2.line(blank_image, (50, i-60), (size_image[1]-50, i-60), (255, 255, 255))
while size_image[0]>i:
    cv2.line(blank_image, (20, i), (size_image[1]-20, i), (255, 255, 255))
    i=i+50

#이미지의 가로크기, 세로크기를 확인, 합칠 방향 결정
if img.shape[0]>img.shape[1]:
    black = np.hstack((edge, blank_image))
else:
    black = np.vstack((edge, blank_image))
white = cv2.bitwise_not(black)
#이미지 보여주기 + 저장
filename1 = "img/"+filename+"1.jpg"
filename2 = "img/"+filename+"2.jpg"
cv2.imshow('black_version', black)
cv2.imshow('white_version', white)
cv2.imwrite(filename1, black)
cv2.imwrite(filename2, white)

#이미지 창 닫기
cv2.waitKey(0)
cv2.destroyAllWindows()

<프로젝트 특징>

1. 이미지 비율을 유지하며, 사이즈를 축소 또는 확대 시킵니다.

2. 가우시안 필터를 통해 이미지를 부드럽게 해주고, 캐니 엣지로 윤곽선을 추출합니다. 

3. 이미지의 좌, 우 크기에 따라 편지지 부분을 가로로 세로로 붙일지 결정 해줍니다.


 

베니시오 델 토로의 젊을 적 사진입니다.

 

도서관을 구경하는 존잘남입니다.
SIOR F4입니다.
제작자입니다.
작년 여름에 놀러갔을 때입니다.
카우보이 유망주입니다.
아무노래나 일단 틀어

 

반응형
Comments