728x90
1. 이미지 내의 일부분만 모델로 추론하고, 그 일부분을 원래의 이미지 내에 끼워넣기
**최종코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
import cv2
import numpy as np
#모델 불러오기
net = cv2.dnn.readNetFromTorch('models/eccv16/la_muse.t7')
#원본 이미지 불러오기
img = cv2.imread('imgs/hw.jpg')
#추론 하려는 이미지만 잘라서 따로 변수에 정의
in_img = img[145:369, 481:812]
#내부 이미지 처리하고 추론하기
h, w, c = in_img.shape
MEAN_VALUE = [103.939, 116.779, 123.680]
blob = cv2.dnn.blobFromImage(in_img, mean=MEAN_VALUE)
net.setInput(blob)
output = net.forward()
output = output.squeeze().transpose((1, 2, 0))
output += MEAN_VALUE
output = np.clip(output, 0, 255)
output = output.astype('uint8')
# 원래 이미지 내에서 끼워넣으려는 이미지 위치와 크기 지정해주기
x1=481 #원래 이미지에서 끼워넣을 이미지가 시작되는 시작점 개념
y1=145
x2=x1+332
y2=y1+224
img[y1:y2, x1:x2] = output
cv2.imshow('img', img)
cv2.waitKey() == ord(27)
|
cs |
**결과이미지
2. 이미지 부분적으로 서로 다른 모델 적용하기
**최종코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
import cv2
import numpy as np
net = cv2.dnn.readNetFromTorch('models/instance_norm/mosaic.t7')
net2 = cv2.dnn.readNetFromTorch('models/instance_norm/candy.t7')
img = cv2.imread('imgs/03.jpg')
h, w, c = img.shape
img = cv2.resize(img, dsize=(500, int(h / w * 500)))
MEAN_VALUE = [103.939, 116.779, 123.680]
blob = cv2.dnn.blobFromImage(img, mean=MEAN_VALUE)
net.setInput(blob)
output = net.forward()
output = output.squeeze().transpose((1, 2, 0))
output += MEAN_VALUE
output = np.clip(output, 0, 255)
output = output.astype('uint8')
net2.setInput(blob)
output2 = net2.forward()
output2 = output2.squeeze().transpose((1, 2, 0))
output2 = output2 + MEAN_VALUE
output2 = np.clip(output2, 0, 255)
output2 = output2.astype('uint8')
output3 = np.concatenate([output[:195, :], output2[195:, :]], axis=0)
#세로축 기준으로 자를시에 axis=0 , 가로축 기준으로 자를시에 axis=1
cv2.imshow('output3', output3)
cv2.waitKey(0)
|
cs |
**결과이미지
-> 만약에 3개 이상의 모델을 적용하려 한다면, 각각의 모델들을 이미지에 추론하는 것까진 동일하고, 합치는 과정에서의 코드가 아래와 같다.
1
2
3
4
5
6
|
output = output[0:100, :] #모델 처리를 적용하고자 하는
output2 = output2[100:200, :]
output3 = output3[200:, :]
output4 = np.concatenate([output, output2, output3], axis=0)
|
cs |
3. 동영상에 딥러닝 모델 처리하기
**최종코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
import cv2
import numpy as np
cap = cv2.VideoCapture('imgs/03.mp4')
net = cv2.dnn.readNetFromTorch('models/eccv16/starry_night.t7')
while True:
ret, img = cap.read()
if ret == False:
break
h, w, c = img.shape
img = cv2.resize(img, dsize=(500, int(h / w * 500)))
MEAN_VALUE = [103.939, 116.779, 123.680]
blob = cv2.dnn.blobFromImage(img, mean=MEAN_VALUE)
net.setInput(blob)
output = net.forward()
output = output.squeeze().transpose((1, 2, 0))
output += MEAN_VALUE
output = np.clip(output, 0, 255)
output = output.astype('uint8')
cv2.imshow('result', output)
if cv2.waitKey(1) == ord('q'):
break
|
cs |
728x90
'Data' 카테고리의 다른 글
[Practice]성별, 나이 예측하기 (0) | 2020.12.13 |
---|---|
[Practice]Face Mask Detector (0) | 2020.12.10 |
딥러닝_이미지 처리하기(2) (0) | 2020.12.04 |
딥러닝_이미지 처리하기(1) (0) | 2020.12.03 |
[Intro]딥러닝 이미지 처리_기본적인 기능(이미지 처리) (0) | 2020.11.26 |