파이썬(Python)/opencv

[Python]OpenCV 카메라로 얼굴, 눈 인식하고 모자이크 하기#2(CascadeClassifier)

끄적끄적아무거나 2022. 6. 22. 08:34
반응형

 

목차

     

     

    파이썬 OpenCV 카메라로 얼굴, 눈 인식하고 모자이크 하기

     

    앞 포스터에서 CascadeClassifier 함수를 사용해서 컴퓨터 카메라로 나오는 얼굴을 인식하는 방법에 대해 알아보았습니다. (https://scribblinganything.tistory.com/554

     

    이번 시간에는 앞서 검출해낸 얼굴에 모자이크를 씌우는 방법에 대해 알아보겠습니다. 

     

    모자이크를 만드는 과정은 아래와 같은 단계가 필요 합니다.

     

    1. 카메라 실행하기

    2. 카메라에 이미지(Image) 가져오기

    3. 이미지를 흑백으로 변환하기

    4. 이미지에서 얼굴 인식하기

    5. 얼굴의 위치 정보 가져오기(사각형)

    6. 이미지에서 얼굴 위치 부분의 이미지 가져오기

    7. 얼굴 위치 부분 이미지에 blur 함수로 모자이크 씌우기

    8. 원본 이미지에 blur 함수 적용한 이미지 붙이기

    9. 이미지 출력

    10. 2번 과정부터 반복

     

     

    실제 예제 코드와 결과를 통해 쉽게 알아보겠습니다.

     

     

     

    파이썬 OpenCV 카메라로 얼굴, 눈 인식하고 모자이크 하기 실습

     

    예제 코드>>

    import cv2
    
    cap = cv2.VideoCapture(0)
    cap.set(cv2.CAP_PROP_FRAME_WIDTH,320)
    cap.set(cv2.CAP_PROP_FRAME_HEIGHT,240)    
    if not cap.isOpened():    
        print("cap open failed")    
        exit()
    
    face_xml = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
    
    while True:
        ret, img = cap.read()  
        if not ret:       
            print("Can't read cap")        
            break  
    
        img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    
        faces = face_xml.detectMultiScale(img_gray, 1.3, 5)
        for (x, y, w, h) in faces:
            # cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)
    
            mosaic_loc = img[y:y + h, x:x + w]
            mosaic_loc = cv2.blur(mosaic_loc,(50,50))
            img_w_mosaic = img
            img_w_mosaic[y:y + h, x:x + w] = mosaic_loc
       
        cv2.imshow("Face Mosaic", img_w_mosaic)
    
        if cv2.waitKey(1) == ord('q'):
            break
    
    cv2.destroyAllWindows()

     

    얼굴 이미지 코드 검출에 대한 상세 설명은 아래를 참조 하시면 됩니다.

    https://scribblinganything.tistory.com/554

     

    [Python]OpenCV 카메라로 얼굴, 눈 인식하고 모자이크 하기#1(CascadeClassifier)

    목차 파이썬 OpenCV 얼굴, 눈 인식 함수(CascadeClassifier) 이번 포스트에서는 OpenCV에서 제공하는 CascadeClassifier 함수를 사용해서 얼굴과 눈을 인식해서 출력해보겠습니다. 흔히 구글 지도나 네이버.

    scribblinganything.tistory.com

     

    모자이크 방법에 대한 상세 설명은 아래 글을 참조 하시면 됩니다. 

    https://scribblinganything.tistory.com/499

     

    [Python]OpenCV 그림 영역 선택, 모자이크 처리하기(Image, Mosaic, Blur)

    목차 파이썬 OpenCV Image File 모자이크 처리 이번 포스트는 파이썬 OpenCV의 Blur 함수를 사용해서 모자이크(Mosaic)처리 하는 방법에 대해 알아보겠습니다. 이번 포스트를 수행하기 위해서 아래 단계를

    scribblinganything.tistory.com

     

     

    결과>>

    제 못생긴 얼굴이 모자이크가 잘되었군요 ㅎㅎ

     

     

    반응형