【发布时间】:2017-11-28 20:34:51
【问题描述】:
这里我说我已经尝试了很多tutorials在OpenCV 3.2中通过使用人脸模块中的FaceRecognizer类来实现人脸识别。但我没有如愿得到接受的结果。
在这里我想问一下,我想知道,在训练和识别过程中,什么是最好的方法或者什么是照顾的条件?
我为提高准确性所做的工作:
- 创建(至少)10 张面孔,以最佳质量、大小和角度训练每个人。
- 尝试在图像中拟合人脸。
- 均衡图像的 HIST
然后我尝试了所有三个人脸识别器(EigenFaceRecognizer,FisherFaceRecognizer,LBPHFaceRecognizer),结果都一样,但是识别率真的很低,我只训练了三个人,但也识别不了好吧(第一个人被认为是第二个等等问题)。
问题:
- 进行训练和识别图像必须来自相同 相机?
- 手动裁剪训练图像(photoshop -> 读取图像然后训练)或此任务 必须以编程方式完成(检测-> 裁剪-> 调整大小然后训练)?
- 每个人脸识别器的最佳参数是什么
(int num_components, double threshold) - 以及如何设置训练算法在未知时返回 -1 人。
【问题讨论】:
-
Q1:首选但不强制,相机必须具有相当的质量 Q2:两者没有区别,但我会选择以编程方式进行,因为它可以节省我的一些时间。 Q3:您可以尝试使用文档中的默认参数,它们对我来说效果很好Q4:阅读line 134开斋节快乐跨度>
-
@ZdaR 谢谢!你能在这里告诉我什么是高阈值,什么是低阈值,这有什么好的价值?这些参数是用于训练还是用于识别?因为当我训练数据时,我会保存它,然后在下一次我只加载数据。当我加载数据时,我还必须准备与训练时相同的参数吗?
-
你能附上文档的链接,这些术语是在哪里引用的?
-
@ZdaR 谢谢,兄弟!也祝你开斋节快乐。我一步一步走的唯一文档是上面问题中的链接,我从 Stack Overflow 等其他论坛收集的另一个想法,所以没有任何确切的链接。但是参数并没有什么好的,例如:什么对什么样的情况有好处,以及这些参数在训练或识别过程中使用等等。
-
@BahramdunAdil 如需灵感,请查看Chapter 8 of Mastering OpenCV - 有一些关于预处理面部的非常方便的注释
标签: c++ opencv image-processing face-recognition