본문 바로가기

내일배움 캠프/TIL

2023 05 18 이미지 특정부분만 화풍 바꾸기

import cv2
import numpy as np

net = cv2.dnn.readNetFromTorch('models/instance_norm/starry_night.t7')
net2 = cv2.dnn.readNetFromTorch('models/instance_norm/the_scream.t7')

img = cv2.imread('imgs/hw.jpg')

h, w, c = img.shape
img = cv2.resize(img, dsize=(500, int(h / w * 500)))


crop_img = img [55:140,190:315]
MEAN_VALUE = [103.939, 116.779, 123.680] # 전처리기법
blob = cv2.dnn.blobFromImage(crop_img, mean=MEAN_VALUE) #전처리 과정 실행

print(blob.shape)

net.setInput(blob) # 입력데이터 설정
output = net.forward() # forward연산을 수행

output = output.squeeze().transpose((1, 2, 0)) 
output += MEAN_VALUE # 전처리과정실행

output = np.clip(output, 0, 255) #배열의갑을 0이랑 255사이범위로 제한
output = output.astype('uint8')# 데이터 타입변경

net2.setInput(blob)
output2 = net2.forward()

output2 = output2.squeeze().transpose((1, 2, 0))
output2 += MEAN_VALUE

output2 = np.clip(output2, 0, 255)
output2 = output2.astype('uint8')


output = output[0:44,:] #이미지 자르기
output2 = output2[44:,:]

output3=np.concatenate((output, output2), axis=0) #배열을 세로모양으로 합치기


img[55:143,190:318] = output3


cv2.imshow('img', img)
cv2.waitKey(0)

결과물

'내일배움 캠프 > TIL' 카테고리의 다른 글

구글이 좋아~  (0) 2023.05.19
코딩테스트 연습성격 유형 검사하기  (2) 2023.05.18
2023 05 16 javascript export import  (0) 2023.05.18
2023 0515 팀프로젝트 회고  (0) 2023.05.15
display:none 이란(사실아님)  (2) 2023.05.15