지난 주차에서 배운것들은 일반 이미지 크기변환,모델적용,모델적용한부분 합성,얼굴인식,얼굴을통해 나이를인식하거나 마스크의유무를 나타내는 모델을 적용시키는 것이였다
이번 4주차에서는 다른이미지를 동영상에 합성시키는것으로 1>2주차 에서했듯이 3>4주차 했던것들과 매우유사했다.
import cv2
import dlib
detector = dlib.get_frontal_face_detector()
predictor = dlib.shape_predictor('models/shape_predictor_5_face_landmarks.dat')
cap = cv2.VideoCapture('videos/01.mp4')
sticker_img = cv2.imread('imgs/pig.png', cv2.IMREAD_UNCHANGED)
----------------------------------여기까지는 이미지or동영상을 읽고변수명을 정해줌
지금까지 다른점이있다면 dlib를 사용했다는점이다---------------------------------------------
while True:
ret, img = cap.read()
if ret == False:
break
--------------------------------------while문으으로 멈추게되면 false하게 된다.---------------------------
dets = detector(img)
for det in dets:
shape = predictor(img, det)
try:
x1 = det.left()
y1 = det.top()
x2 = det.right()
y2 = det.bottom()
# compute pig nose coordinates
center_x = shape.parts()[4].x
center_y = shape.parts()[4].y - 5
h, w, c = sticker_img.shape
nose_w = int((x2 - x1) / 4)
nose_h = int(h / w * nose_w)
nose_x1 = int(center_x - nose_w / 2)
nose_x2 = nose_x1 + nose_w
nose_y1 = int(center_y - nose_h / 2)
nose_y2 = nose_y1 + nose_h
# overlay nose
overlay_img = sticker_img.copy()
overlay_img = cv2.resize(overlay_img, dsize=(nose_w, nose_h))
overlay_alpha = overlay_img[:, :, 3:4] / 255.0
background_alpha = 1.0 - overlay_alpha
img[nose_y1:nose_y2, nose_x1:nose_x2] = overlay_alpha * overlay_img[:, :, :3] + background_alpha * img[nose_y1:nose_y2, nose_x1:nose_x2]
except:
pass
-----------------------------------------여기까지는 이미지를 적용시켜줄 동영상의 눈코입의 좌표를조절하거나 이미지의 크기를 변경해준다.
맨위에서 dlib 의 detector() 함수를이용해 선언해주었다.------------------------------------------------------------------
cv2.imshow('result', img)
if cv2.waitKey(1) == ord('q'):
break
------------------이미지를 윈도우창에서 열어주기----------------------
끝
코드자체는 그렇게 어렵지않았지만 대부분의 오류는 강의자료와 지금 사용하는 버전의 라이브러리가 맞지않아서 충돌현상이 났었다.. 이마저도 실행안되는오류는 아니였고 노란줄로 불편했을뿐 ..
'스파르타코딩개발일지' 카테고리의 다른 글
TIL 팀프로젝트 (딥러닝편) (0) | 2022.11.24 |
---|---|
TIL 팀프로젝트d-1 (0) | 2022.11.22 |
TIL Deep-Learning 2일차 (0) | 2022.11.17 |
TIL Deep-Learning 1일 (1) | 2022.11.16 |
TIL Docke&Linux 5일차 (0) | 2022.11.15 |