Arcfelismerés pythonnal
---------------------
import face_recognition
import cv2
import numpy as np
# 1. Ismert személy(ek) betanítása
# Tölts be egy képet a referenciáról, és add meg a nevét.
# Készíts egy "ismert_arcok" mappát, és tegyél bele egy "sajat_kep.jpg" fájlt.
ismert_kep = face_recognition.load_image_file("ismert_arcok/sajat_kep.jpg")
ismert_arc_kodolasa = face_recognition.face_encodings(ismert_kep)[0]
ismert_arc_nevek = [
"Sajat Neved"
]
# Inicializáljuk a webkamerát (0 a beépített/fő kamera)
video_capture = cv2.VideoCapture(0)
print("Arckeresés indítása... (A program bezárásához nyomd meg a 'q' billentyűt)")
while True:
# Egyetlen képkocka beolvasása a kamerából
ret, frame = video_capture.read()
# A OpenCV BGR formátumban dolgozik, a face_recognition RGB-t vár, ezért konvertálunk
rgb_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
# Minden arc és azok kódolásainak megkeresése az aktuális képkockán
arc_helyek = face_recognition.face_locations(rgb_frame)
arc_kodolasok = face_recognition.face_encodings(rgb_frame, arc_helyek)
nevek = []
for arc_kodolas in arc_kodolasok:
# Ellenőrizzük, hogy az arc egyezik-e az ismert arcokkal
egyezesek = face_recognition.compare_faces(ismert_arc_kodolasa, arc_kodolas)
nev = "Ismeretlen"
# Ha egyezést talál, használhatjuk a legkisebb távolságú (legjobb) egyezést
arc_tavolsagok = face_recognition.face_distance([ismert_arc_kodolasa], arc_kodolas)
legjobb_egyezes_index = np.argmin(arc_tavolsagok)
if egyezesek[legjobb_egyezes_index]:
nev = ismert_arc_nevek[legjobb_egyezes_index]
nevek.append(nev)
# Az eredmények kirajzolása a képre
for (top, right, bottom, left), nev in zip(arc_helyek, nevek):
# Négyszög rajzolása az arc köré
cv2.rectangle(frame, (left, top), (right, bottom), (0, 0, 255), 2)
# Név kiírása az arc alá
cv2.rectangle(frame, (left, bottom - 35), (right, bottom), (0, 0, 255), cv2.FILLED)
font = cv2.FONT_HERSHEY_DUPLEX
cv2.putText(frame, nev, (left + 6, bottom - 6), font, 0.5, (255, 255, 255), 1)
# A képkocka megjelenítése egy ablakban
cv2.imshow('Arcfelismero', frame)
# Kilépés a 'q' billentyű lenyomásával
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# Kamera és az ablakok felszabadítása
video_capture.release()
cv2.destroyAllWindows()
-------------------------
Enulált tesztelés
Arcfelismerés indítása... [EMULÁCIÓ]
Kamera helyett szimulált képkockák feldolgozása...
Képkocka 1
Talált arc: Sajat Neved
Felismert személy: Sajat Neved
Képkocka 2
Talált arc: Ismeretlen
Felismert személy: Ismeretlen
Képkocka 3
Talált arc: Sajat Neved
Felismert személy: Sajat Neved
Az emuláció véget ért.
Nincsenek megjegyzések:
Megjegyzés küldése