face_recognition.py
# Dieses Werk ist unter der MIT-Lizenz lizenziert.
# Copyright (c) 2013-2023 OpenMV LLC. Alle Rechte vorbehalten.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# Gesichtserkennung mit LBP-Deskriptoren.
# Siehe Timo Ahonens „Face Recognition with Local Binary Patterns“.
#
# Vor dem Ausführen des Beispiels:
# 1) Laden Sie die AT&T-Gesichtsdatenbank herunter: http://www.cl.cam.ac.uk/Research/DTG/attarchive/pub/data/att_faces.zip
# 2) Entpacken Sie das Verzeichnis orl_faces und kopieren Sie es in das Stammverzeichnis der SD-Karte.
#
# HINWEIS: Dies ist lediglich eine Proof-of-Concept-Implementierung des oben genannten Papers und funktioniert unter realen Bedingungen nicht gut.
import image
SUB = "s2"
NUM_SUBJECTS = 5
NUM_SUBJECTS_IMGS = 10
img = image.Image("orl_faces/%s/1.pgm" % (SUB)).mask_ellipse()
d0 = img.find_lbp(roi=(0, 0, img.width(), img.height()))
img = None
print("")
for s in range(1, NUM_SUBJECTS + 1):
dist = 0
for i in range(2, NUM_SUBJECTS_IMGS + 1):
img = image.Image("orl_faces/s%d/%d.pgm" % (s, i)).mask_ellipse()
d1 = img.find_lbp(roi=(0, 0, img.width(), img.height()))
dist += image.match_descriptor(d0, d1)
print("Average dist for subject %d: %d" % (s, dist / NUM_SUBJECTS_IMGS))