使用Python,OpenCV分别检测我自己的脸和其他人

时间:2019-08-22 11:39:07

标签: python opencv face-detection

我想制作一个面部检测应用程序,该应用程序先检测我的面部,然后将其放置在带有标题(如“ my_name”)的框中,同时还要检测其他人在带有标题(如“未知”)的框中的放置。我已经编写了一个可以正常运行的程序,但是我不能确定它是否运气很好,或者这个概念确实有效。我想请你帮忙。我的程序在算法上是否正确?如果没有,您能建议些什么吗?

import cv2

name_cascade = cv2.CascadeClassifier('cascade.xml')
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)

while True:
    ret, frame = cap.read()
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    names = name_cascade.detectMultiScale(gray, 1.3, 5)
    faces = face_cascade.detectMultiScale(gray, 1.3, 5)
    flag = 0

    for (x,y,w,h) in names:
        font = cv2.FONT_HERSHEY_COMPLEX
        cv2.putText(frame, 'Name', (x-4,y-4), font, 0.5, (0,255,255), 1, cv2.LINE_AA)
        cv2.rectangle(frame, (x,y), (x+w, y+h), (255,0,0), 2)
        flag = 1

    if flag == 0:
        for (x,y,w,h) in faces:
            font = cv2.FONT_HERSHEY_COMPLEX
            cv2.putText(frame, 'Unknown', (x-4,y-4), font, 0.5, (0,255,255), 1, cv2.LINE_AA)
            cv2.rectangle(frame, (x,y), (x+w, y+h), (255,0,0), 2)


    cv2.imshow('img', frame)
    k = cv2.waitKey(30) & 0xff
    if k == 27:
        break

cap.release()
cv2.destroyAllWindows()

0 个答案:

没有答案