728x90
반응형

저번에는 실시간으로 얼굴 탐지를 하고 탐지된 얼굴들을 모두 모자이크 처리했었다.

이번에는 럭키짱의 강건마 이미지를 사용해 모자이크 처리를 해볼 것이다.

전에 했던 내용은 설명하지 않을 것이니 이해가 안 되는 사람은 이전 글을 참고하도록 하자!

3.1 OpenCV를 이용한 실시간 얼굴 모자이크 처리: https://jinho-study.tistory.com/231

 

3.1 OpenCV를 이용한 실시간 얼굴 모자이크 처리

저번에는 실시간 얼굴 탐지를 했었다. 이번에는 실시간으로 얼굴 탐지를 하고 탐지된 모든 얼굴 영역을 각각 탐지된 얼굴 이미지를 축소-확대한 이미지로 대체하는 방식으로 모자이크 처리

jinho-study.tistory.com

아래는 전체 코드를 정리한 코드이다.

import numpy as np
import cv2

xml = 'haarcascades/haarcascade_frontalface_default.xml'
face_cascade = cv2.CascadeClassifier(xml)

mosaic_img = cv2.imread('image/mosaic.png') # 럭키짱의 강건마 이미지를 저장

cap = cv2.VideoCapture(0) # 노트북 웹캠을 카메라로 사용
cap.set(3,640) # 너비
cap.set(4,480) # 높이

while(True):
    ret, frame = cap.read() 
    frame = cv2.flip(frame, 1) # 좌우 대칭
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    faces = face_cascade.detectMultiScale(gray,1.05,5)
    print("Number of faces detected: " + str(len(faces)))

    if len(faces):
        for (x,y,w,h) in faces:
            """ 탐지된 얼굴 영역을 강건마 이미지로 바꾸는 코드"""
            # 탐지된 얼굴 영역에 맞도록 강건마 이미지의 높이와 너비를 바꿔줌.
            t = cv2.resize(mosaic_img, dsize=(h, w), interpolation=cv2.cv2.INTER_LINEAR)
            frame[y:y+h, x:x+w] = t # 탐지된 얼굴 영역을 강건마 이미지로 모자이크 처리

            """ 사람의 어깨선과 머리선이 강건마 이미지와 딱 맞게 이어지도록 구현한 코드
                문제는 나한테만 딱 맞는다... """
#             wi, hi = int(w*0.08/2), int(h*0.23/2)
#             t = cv2.resize(mosaic_img, dsize=(w+wi*2, h+hi*2), interpolation=cv2.cv2.INTER_LINEAR)
#             frame[y-hi:y+h+hi, x-wi:x+w+wi] = t

    cv2.imshow('result', frame)
        
    k = cv2.waitKey(30) & 0xff
    if k == 27: # Esc 키를 누르면 종료
        break

cap.release()
cv2.destroyAllWindows()

모자이크 처리하는 기능을 조금 다르게 2개를 구현했는데 위는 탐지된 얼굴 영역을 강건마 이미지로 바꿔주고,

아래는 사람의 어깨선과 머리선이 강건마 이미지와 딱 맞게 이어지도록 강건만 이미지의 크기를 바꿔줬다.

근데 문제는 나한테만 딱 맞는다...

위의 코드를 실행하면 아래와 같이 실시간으로 탐지된 얼굴이 강건마로 잘 바뀌고 있는 것을 확인할 수 있다. 

내 얼굴 강건마

내 얼굴 기준으로는 말 그대로 기적의 비율을 보여준다.

너네 얼굴 강건마

여러 명 있어도 아주 잘 된다.

github: https://github.com/kimjinho1/Real-time-specific-object-mosaic-using-deep-learning/blob/master/3.2%20Real-time_face_mosaic_with_lucky-jjang.ipynb

 

kimjinho1/Real-time-specific-object-mosaic-using-deep-learning

딥러닝을 이용한 실시간 특정 객체 모자이크 처리 . Contribute to kimjinho1/Real-time-specific-object-mosaic-using-deep-learning development by creating an account on GitHub.

github.com

728x90
반응형

+ Recent posts