-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathface_recognition
More file actions
68 lines (52 loc) · 2.73 KB
/
face_recognition
File metadata and controls
68 lines (52 loc) · 2.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import cv2
print('face recognition test')
face = cv2.VideoCapture(0)
face.set(cv2.CAP_PROP_FRAME_WIDTH, 640) # 세로 사이즈
face.set(cv2.CAP_PROP_FRAME_HEIGHT, 480) # 가로 사이즈
#casecade_xml = 'openCV_XML/haarcascade_frontalface_default.xml'
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
# 실시간 영상에서 얼굴 검출
def videoDetector(face, face_cascade) :
faces_cnt = 0 # 검출 얼굴수
# 카메라의 프레임을 지속적으로 받아오기
while True :
# vcap.read() 프레임 읽기
# ret 은 카메라 상태 이며, 정상 : True, 비정상 : False
# frame 은 현재시점의 플레임
ret, frame = face.read()
# # 숫자키 1 입력시 좌우 대칭 변경
# if cv2.waitKey(1) == 49 :
# # 대칭 처리
# # value < 0 상하좌우 대칭
# # value = 0 상하 대칭
# # value > 0 좌우 대칭
# frame = cv2.flip(frame, 1)
frame = cv2.flip(frame, 1) # 좌우 대칭 변경
# 영상 이미지를 그레이스케일로 이진화(검은색, 흰색{True, False})
# cv2.cvtColor(대상 이미지, 그레이 스케일)
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# 영상 이미지에서 얼굴 검출 하기
# gray # 대상 이미지 행렬
# ,scaleFactor = 1.1 # 이미지 피라미드 규모인자 크기(Scale Factor)
# ,minNeighbors = 5 # 최종 검출영역 확정용 이웃 사각형의 갯수 설정
faces = face_cascade.detectMultiScale(gray, 1.1, 5)
# 화면에 검출 된 얼굴 수 가 변경될때마다 출력
if faces_cnt != len(faces) :
faces_cnt = len(faces)
if faces_cnt != 0 :
print("현재 검출된 얼굴 수 : ", str(faces_cnt))
# 검출된 안면에 사각형 그리기
# cv2.rectangle(영상이미지, (x1, y1), (x2, y2), (B, G, R), 두깨, 선형타입)
# (X1, Y1) 좌측 상단 모서리, (X2, Y2) 우측 하단 모서리.
if len(faces) :
for x, y, w, h in faces :
cv2.rectangle(frame, (x, y), (x + w, y + h), (255,255,255), 2, cv2.LINE_4)
# 윈도우창 (Title , 프레임 이미지)
cv2.imshow("VideoFrame", frame)
# cvs2.waitKey(1) 1은 밀리세컨으로 키입력값 대기 지연시간이다. ESC로 멈춤
if cv2.waitKey(1) == 27 :
face.release() # 메모리 해제
cv2.destroyAllWindows() # 모든창 제거, 특정 창만듣을 경우 ("VideoFrame")
break;
# 실시간 영상에서 얼굴 검출 호출
videoDetector(face, face_cascade)