我在我的c#应用程序中使用openCV库来检测由于我的知识库图像而导致的脸部,但是在检测到脸部时出现问题,我的功能在第一次正确检测到人物A'时面对并显示他的名字,但是在这个检测之后,该功能还有另一个检测同一个人的脸,但这次是用人B的名字,尽管在场景中没有人B,但不幸的是在错误的操作中检测到他的脸。 这是我的识别器功能代码:
MCvTermCriteria termCrit = new MCvTermCriteria(countTrain, 0.001);
EigenObjectRecognizer recognizer = new EigenObjectRecognizer(trainingImages.ToArray(), clientInfo.ToArray(), 2500, ref termCrit);
Emgu.CV.EigenObjectRecognizer.RecognitionResult recognizerResult = recognizer.Recognize(result);
在上面的代码中,我将经过训练的图像数组和所有者标签数组传递给检测操作。
答案 0 :(得分:1)
人脸识别不是一个简单的问题,因为人脸在两次尝试之间会有很大差异,听起来像是你的识别器工作正常,但可能没有你喜欢的训练。
例如,面部识别的特征方法对面部姿势非常敏感。如果您使用向左看的人A和向右看的人B的图像训练识别器,则人A在摄像机前移动并向右看,它可能将它们标记为人B,因为他们的姿势比他们的面部特征更具戏剧性的变化。
我建议您使用每个人的大量图像训练您的模型,可能会有一些不同的姿势,或者确保您的用户每次都能直视相机。
同样值得一看的是使用"局部二进制模式直方图"模型而不是本征,因为我发现它更加健壮。
TL; DR
我认为你的识别器可能正常工作,但可以通过更多的训练数据进行改进 我建议您按照this链接尽可能多地学习,它是EMGU包装中面部识别的重要资源。