1 | initial version |
mostly they return person 1 (who has 30 images) for most faces.
that sounds likely. remember, it just tries to find the one with the smallest distance from the dataset. if one person is "over-represented" in your db, it will show up more often than others.
Q1: the more you can restrict it to "straight", the better.
Q2: say, 10 images per person.
Q3: depends on your hardware. training fisherfaces with more than 5000 images might take hours (and the larger the images, the worse it will get).
Q4: you can't really "overfit" a linear, 1 nearest neighbour search (it's maybe the wrong word). but the more persons you add, the less "room" to distinguish them is left.
Q5: yea, preprocessing, it's important. the more "background" you have in the images, the more likely it is, that it decides because of that, and not the actual face. also, you could try to align the cropped face images, so the eyes are on a horizontal line, and all in the same distance to the image borders.
last, but not least: what are you trying to achieve with it ? those face recognizer classes are meant to do identification (closest from a db). if your problem is authentication (yes/no for a single person -- it's probably the wrong tool.)
then, current opencv also has a new pretrained dnn method available (also works on color images)