반응형
목차
파이썬 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
모자이크 방법에 대한 상세 설명은 아래 글을 참조 하시면 됩니다.
https://scribblinganything.tistory.com/499
결과>>
제 못생긴 얼굴이 모자이크가 잘되었군요 ㅎㅎ
반응형
'파이썬(Python) > opencv' 카테고리의 다른 글
[Python]OpenCV 카메라로 얼굴, 눈 인식하고 모자이크 하기#1(CascadeClassifier) (0) | 2022.06.21 |
---|---|
[Python]OpenCV 카메라 모션 감지(Motion Sensor)(countNonZero, bitwise_and, threshold, absdiff) (1) | 2022.06.13 |
[Python] OpenCV PC 카메라 특정 색상만 출력하기 (Camera, BGR, HSV, inRange, bitwise_and) (0) | 2022.06.04 |
[Python]OpenCV 임계값 비교하기 threshold (0) | 2022.04.22 |
[Python]OpenCV 픽셀 처리 함수: add, subtract, multiply, divide (0) | 2022.04.21 |