0

因此,我使用 OpenCV2 在 Python 中为网络摄像头制作了一个人脸检测程序。但这只是检测到面部,它不能识别/识别它是谁。那么,我如何训练我的程序来识别它是否是我呢?
到目前为止我的代码:


video = cv2.VideoCapture(0)

while True:
    check, frame = video.read()
    faces = face_cascade.detectMultiScale(frame,
                                          scaleFactor=1.1, minNeighbors=5)
    for x,y,w,h in faces:
        frame = cv2.rectangle(frame, (x,y), (x+w,y+h), (0,255,0), 3)

    cv2.imshow('Face Detector', frame)

    key = cv2.waitKey(1)

    if key == ord('q'):
        break

video.release()
cv2.destroyAllWindows()

我还想知道程序是否有办法告诉它正在检测多少张面孔?

4

1 回答 1

1

您可以将预训练的 openface 模型与 opencv 的 dnn 模块一起使用,从裁剪的人脸图像中获取特征向量,这可以很容易地与 L2 或余弦距离进行比较

从这里获取模型: https ://storage.cmusatyalab.org/openface-models/nn4.small2.v1.t7

net = cv2.dnn.readNetFromTorch("nn4.small2.v1.t7")

# then, for each image:
blob = cv2.dnn.blobFromImage(img, 1./255, (96,96), (0,0,0), True, False)
net.setInput(blob)
feature = net.forward() # 128 floats

if cv2.norm(f1,f2) < 0.5:
    # SAME !!! 
于 2021-12-27T10:58:55.413 回答