ageitgey / face_recognition

The world's simplest facial recognition api for Python and the command line
MIT License
53.44k stars 13.49k forks source link

If match #680

Closed MrKuky closed 5 years ago

MrKuky commented 5 years ago

Hi, Im trying to write a code where if program find match in webcamera it will do something, but I dont know how to write an if statement. Does anyone know what happening when I have match in camera and how to rewrite it to IF statement? For example, I run program, I see webcam pic, me like "unknown" (its okay) but I need if I show someone on pic (for example) to camera and program recognice him, it will do something what I write...

Hope you understand my bad english :D thanks!

picekl commented 5 years ago

Following answer is in Czech language!

Ahoj Kuky,

nerozumim s cim mas presne problem. Pochopil jsem to tak, ze neumis napsat "if". Myslel si to opravdu tak? Jestlize ano, tak si nejspis musis pomoci sam a to tim, ze si nastudujes, jak se v pythonu if pouziva. Doporucuji tento odkaz -> http://anh.cs.luc.edu/handsonPythonTutorial/ifstatements.html Jestlize ne, tak to zkus prosim vysvetlit v cestine.

LP

MrKuky commented 5 years ago

Following answer is in Czech language!

Ahoj,

svým způsobem máš pravdu, ne že bych neuměl napsat "if", obecně to umím, ale nevím, jak ho zde použít. Tedy, potřebuji, aby se vykonala akce v případě live shody obličejů. Např. běží kamera, objevují se tam různé lidi. Některé program zná, rozpozná a přidělí jména, některé ne, a pokud se objeví např. Obama a bude rozpoznán, chci, aby se něco vykonalo. Tedy jen nedokážu přijít na to, co by mělo být v podmínce. Česky a polopatě by to mělo být něco ve smyslu:

if nalezenaTvar == tvar_Obama: print("Obama přítomen na kameře!")

picekl commented 5 years ago

Diky za upresneni. Zkusim ti to vysvetlit na examplu. Koukni na nasledujici script https://github.com/ageitgey/face_recognition/blob/master/examples/facerec_from_webcam_faster.py

1) Na 25.-28. radku vytvoris pole, v kterem jsou dva face encodingy. 2) Na 29.-32. radku vytvoris pole, v kterem jsou jmena. POZNAMKA: Index v poli s enkodingy je stejny, jako index se jmeny.

3) Na 59. radku porovnas vytvoreny list znamych face encodingu s neznamym. Vysledkem je list, ktery obsahuje hodnoty 0/1. Kdyz je na neznamem obrazku biden, tak bude vypadat takto [0, 1]. Kdyz tam bude obama, tak [1, 0]. Kdyz tam nebude ani jeden, tak [0, 0] POZNAMKA: Tvym ukolem je tedy najit index, kde je jednicka a tento index vypsat z pole, kde mas ulozena jmena.

Kod ktery hledas je mezi radky 63-65. TEDY:

if True in matches: # Je-li alespon jedna jednicka v listu, tak pojdme dal. first_match_index = matches.index(True) # Najdi index kde ta jednicka je name = known_face_names[first_match_index] # Jake jmeno odpovida tomuto indexu? print("To je prece: ", known_face_names[first_match_index])

MrKuky commented 5 years ago

Super, díky, toto pokud dobře chápu funguje na všechny a bude to vypisovat toho, koho program zrovna najde, že? A když bych chtěl printnout něco jen v případě, že shoda bude odpovídat konkrétnímu člověku?

picekl commented 5 years ago

Pak staci jenom. If name == "tvoje jmeno": udelej co chces

MrKuky commented 5 years ago

Perfektní! Díky moc!