Programming/python(파이썬)

python용 얼굴탐지, 인식

구차니 2025. 8. 4. 12:47

테스트 해보니 haar 보다 프레임은 안나오고(한 10프레임?)

cpu 점유율은 1개 조지지만, 전체 로드율은 낮은 듯

 

[링크 : https://github.com/ageitgey/face_recognition]

     [링크 : https://wikidocs.net/227902]

[링크 : https://dlib.net/]

 

haar cascade

[링크 : https://bkshin.tistory.com/entry/컴퓨터-비전-1-하르-캐스케이드-얼굴-검출-Haar-Cascade-Face-Detection]



face_recognition 패키지

import cv2
import face_recognition

webcam = cv2.VideoCapture(0)

if not webcam.isOpened():
    print("Could not open webcam")
    exit()

while webcam.isOpened():
    status, frame = webcam.read()

    if status:
        face_locations = face_recognition.face_locations(frame)
        print(face_locations)
        if len(face_locations) > 0:
            for iter in face_locations:
                cv2.rectangle(frame, (iter[1], iter[0]), (iter[3], iter[2]), (0,255,0), 2)
        cv2.imshow("test", frame)

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

webcam.release()
cv2.destroyAllWindows()

 

opencv2 / haar cascade

import cv2
import time

dirname = '/home/falinux/.local/lib/python3.10/site-packages/cv2/data/'

face_cascade = cv2.CascadeClassifier(dirname + 'haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier(dirname + 'haarcascade_eye.xml')

cam = cv2.VideoCapture(0)
# cam.set(3, 160) # CV_CAP_PROP_FRAME_WIDTH
# cam.set(4, 120) # CV_CAP_PROP_FRAME_HEIGHT
# cam.set(5, 20) # CV_CAP_PROP_FPS
# print(cam.get(3))
# print(cam.get(4))
# print(cam.get(5))

while True:
 ret_val, img = cam.read()
 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
 
 faces = face_cascade.detectMultiScale(gray, 1.05, 5)
 print(faces)
 for (x, y, w, h) in faces:
  img = cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
  roi_gray = gray[y:y+h, x:x+w]
  roi_color = img[y:y+h, x:x+w]
  eyes = eye_cascade.detectMultiScale(roi_gray)
  for (ex, ey, ew, eh) in eyes:
   cv2.rectangle(roi_color, (ex, ey), (ex+ew, ey+eh), (0, 255, 0), 2)

 time.sleep(0.15)
 cv2.imshow("Cam Viewer", img)
#  cv2.imshow("Cam Viewer gray", gray)
 if cv2.waitKey(1) == 27:
     break