使用opencv c ++对相同的面部进行分组

时间:2013-01-14 08:02:06

标签: c++ opencv face-recognition

我正在尝试使用opencv将文件夹分组。

我正在使用http://docs.opencv.org/modules/contrib/doc/facerec/facerec_tutorial.html处的特征脸示例。但找不到任何解决我问题的方法。

I have a set of faces in my face database: A,B,C,D,E,F,G,H,I
As a result I try to get; 
 - A,B,D are person1
 - C,E,F are person2 
 - G,H   are person3
 - I     is person4

我猜这个过程应该是这样的;

sampleFace = A
while  
  mode.train(faces,labels) // trains face database 
  model.predict(sampleFace, &predict, &confidence) // get the prediction 
  using the confidence and similarity percentage decide A,B,D faces are person1
  remove A,B,D from face database and remove the labels of these images also 
  if faces.size=1 exit loop
  sampleFace = C
end of loop

为了得到那个结果,我想我需要在特征面样本中为我的模型设置一个阈值。并且需要使用置信度值。

实际上我想设置像%80这样的相似度得分,然后我希望获得与给定样本面具有大于%80的相似度得分的图像。特征脸样本仅给出一个具有置信度值的相似面。我需要为每个人获得具有置信度值的多个面,然后我可以比较相似性得分。同样在特征脸样本中我不知道置信度的限制,我需要每个脸的百分比值。

非常感谢任何帮助,建议或代码示例。

1 个答案:

答案 0 :(得分:0)

您尝试执行的方法是基于无监督学习,这在面部图像上无效。如果每个人都有足够数量的样本,那么您最好用至少一个人的图像训练分类器;然后为数据集中的每个图像找到最近的类。