728x90
반응형
저번에는 단순히 이미지로 얼굴을 탐지했었다. 이번에는 노트북 웹캠을 통해 실시간으로 얼굴 탐지를 해볼 것이다.
전에 했던 내용은 설명하지 않을 것이니 이해가 안 되는 사람은 이전 글을 참고하도록 하자!
1. OpenCV를 이용한 얼굴 탐지: https://jinho-study.tistory.com/229?category=926937
아래는 전체 코드를 정리한 코드이다.
import numpy as np
import cv2
xml = 'haarcascades/haarcascade_frontalface_default.xml'
face_cascade = cv2.CascadeClassifier(xml)
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:
cv2.rectangle(frame,(x,y),(x+w,y+h),(255,0,0),2)
cv2.imshow('result', frame)
k = cv2.waitKey(30) & 0xff
if k == 27: # Esc 키를 누르면 종료
break
cap.release()
cv2.destroyAllWindows()
얼굴 탐지하는 부분은 전과 똑같고, 추가된 부분은 cv2.VideoCapture, cap.set, cv2.flip, while 문과 break이다.
cv2.VideoCapture는 비디오 캡처 객체를 생성해 주는데, 안의 숫자는 장치 인덱스(어떤 카메라를 사용할 것인가)이다. 1개만 부착되어 있으면 0, 2개 이상이면 첫 번째 웹캠은 0, 두 번째 웹캠은 1로 지정하면 된다. 난 노트북 웹캠을 사용할 것이기 때문에 그냥 0이면 된다.
cap.set은 프레임의 크기를 설정해준다.
cv2.flip은 이미지를 좌우, 상하 대칭을 해준다. 안에 인자가 1이면 좌우, 2이면 상하 대칭이다. cv2.flip은 필수는 아니다.
위의 코드를 실행하면 아래와 같이 실시간으로 얼굴 탐지를 할 수 있다. Esc키를 누르면 종료된다.
728x90
반응형
'Projects > 얼굴 인식과 모자이크 처리' 카테고리의 다른 글
실시간 얼굴 인식과 모자이크 처리 (12) | 2020.06.20 |
---|---|
0. OpenCV를 이용해 셀카 찍기 (0) | 2020.03.24 |
3.2 OpenCV를 이용한 실시간 얼굴 모자이크 처리 feat by 럭키짱의 강건마 (0) | 2020.03.23 |
3.1 OpenCV를 이용한 실시간 얼굴 모자이크 처리 (0) | 2020.03.23 |
1. OpenCV를 이용한 얼굴 탐지 (0) | 2020.03.23 |