2026. június 19., péntek

Arcfelismerés pythonnal

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