【发布时间】:2014-04-15 06:47:30
【问题描述】:
我对 EMGUCV 很陌生。我想做一个人脸识别系统,我已经实现了,但结果不能接受。这是我的识别代码:
public List<Person> RecognizeFaces(List<Image<Bgr, byte>> faces)
{
List<Person> RecognizedPersons = new List<Person>();
MCvTermCriteria termCrit = new MCvTermCriteria(TrainDB.Count, 0.001);
EigenObjectRecognizer recognizer = new EigenObjectRecognizer(
this.ToGrayList(this.TrainDB),
labels.ToArray(),
7000, // I changed this argument many times but nothing has changed (1000, 2000, ...
ref termCrit);
string label = "";
for (int i = 0; i < faces.Count; i++)
{
label = recognizer.Recognize(faces[i].Convert<Gray, byte>());
RecognizedPersons.Add(new Person(faces[i],!label.Equals("") ? label : "unknown"));
}
return RecognizedPersons;
}
此函数从输入图像中获取先前检测到的人脸列表,并返回类型为Person 的列表,其中每个人都包含一张图像和一个识别人的标签。
我的问题是为什么结果不好?我的代码有问题吗?或者训练集TrainDB有问题,如果是这样,创建训练集时最好遵循的准则是什么?
我根据这个收集了训练集: 1- 在包含一个人的图像上应用人脸检测(使用 EMGU) 2-然后我将检测到的人脸调整为 200 : W, 200 : H
我的训练集中的一些图像:
测试图像的一些示例:
- 列表项
我的最后一个问题.. Emgu/OpenCv 是用于人脸识别的强大工具吗?还是有其他的结果可以更准确?
【问题讨论】:
-
训练集的大小是多少?训练集中有多少主题,每个主题有多少图像?测试图像的姿势/闪电条件/面部表情是否与训练图像相同?
-
@GilLevi 训练集的大小是 15 .. 我有 3 个人 5 张图像,每个人 .. 并非所有测试图像都处于相同的姿势/闪电状态,但面部表情是相同的
-
感谢上传测试图片。对于每个测试图像,您是先检测人脸,然后再应用人脸识别,还是对整个输入图像进行人脸识别?
-
@GilLevi 不先生,我首先对输入图像应用人脸检测,然后对返回的结果应用人脸识别
-
每人 5 个绝对不够。 20,也许吧。
标签: opencv image-processing computer-vision emgucv face-recognition