Sadržaj:
- Korak 1: Instalirajte Anacondu
- Korak 2: Preuzmite Open CV paket
- Korak 3: Postavite varijable okoliša
- Korak 4: Potvrdite test
- Korak 5: Napravite kôd za prepoznavanje lica
- Korak 6: Napravite kôd za kreiranje skupa podataka
- Korak 7: Napravite kôd za obuku prepoznavača
- Korak 8: Napravite kôd za prepoznavanje lica i rezultata
Video: Prepoznavanje lica+prepoznavanje: 8 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:08
Ovo je jednostavan primjer pokretanja otkrivanja lica i prepoznavanja pomoću OpenCV -a s kamere. NAPOMENA: OVAJ PROJEKT SAM NAPRAVIO ZA TAKMIČENJE SENZORA I KORISTIO SAM KAMERU KAO SENZOR ZA LICA ZA PRAĆENJE I PREPOZNAVANJE. Dakle, naš cilj Na ovoj sesiji, 1. Instalirajte Anacondu 2. Preuzmite Open CV paket 3. Postavite varijable okoliša 4. Testirajte da biste potvrdili 5 Napravite kôd za otkrivanje lica 6. Napravite kôd za kreiranje skupa podataka 7. Napravite kôd za obuku prepoznavača 8. Napravite kôd za prepoznavanje lica i rezultat.
Korak 1: Instalirajte Anacondu
Anaconda je u osnovi lijepo upakiran Python IDE koji se isporučuje s gomilom korisnih paketa, kao što su NumPy, Pandas, IPython Notebook itd. Čini se da se preporučuje svuda u naučnoj zajednici. Provjerite Anacondu da biste je instalirali.
Korak 2: Preuzmite Open CV paket
Prvo idite na službenu web stranicu OpenCV da biste preuzeli cijeli paket OpenCV. Odaberite verziju koja vam se sviđa (2.x ili 3.x). Ja sam na Pythonu 2.x i OpenCV 2.x - uglavnom zato što su ovako postavljeni/zasnovani vodiči za OpenCV -Python.
U mom slučaju, izvadio sam paket (u suštini fasciklu) direktno na svoj F disk. (F: / opencv).
Korak 3: Postavite varijable okoliša
Kopirajte i zalijepite datoteku cv2.pyd
Direktorij Anaconda web-paketa (npr. F: / Program Files / Anaconda2 / Lib / site-packages u mom slučaju) sadrži Python pakete koje možete uvesti. Naš cilj je kopirati i zalijepiti datoteku cv2.pyd u ovaj direktorij (tako da možemo koristiti import cv2 u našim Python kodovima.).
Da biste to učinili, kopirajte datoteku cv2.pyd …
Iz ovog direktorija OpenCV (početni dio može se malo razlikovati na vašoj mašini):
# Python 2.7 i 64-bitna mašina: F: / opencv / build / python / 2.7 / x64# Python 2.7 i 32-bitna mašina: F: / opencv / build / python / 2.7 / x84
U ovaj direktorij Anaconda (početni dio može se malo razlikovati na vašoj mašini):
F: / Program Files / Anaconda2 / Lib / site-packages
Nakon izvršavanja ovog koraka sada ćemo moći koristiti import cv2 u Python kodu. ALI, moramo još malo poraditi na tome da FFMPEG (video kodek) radi (kako bismo mogli raditi stvari poput obrade videozapisa.)
Desnom tipkom miša kliknite "Moje računalo" (ili "Ovaj računar" u sustavu Windows 8.1)-> lijevo kliknite Svojstva-> lijevo kliknite karticu "Napredno"-> lijevo kliknite gumb "Varijable okruženja …". Dodajte novu korisničku varijablu da pokažem na OpenCV (ili x86 za 32-bitni sistem ili x64 za 64-bitni sistem.) Trenutno sam na 64-bitnoj mašini.
32-bitniOPENCV_DIRC: / opencv / build / x86 / vc12
64-bitniOPENCV_DIRC: / opencv / build / x64 / vc12
Dodajte %OPENCV_DIR %\ bin u PATH korisničke varijable.
Na primjer, moja korisnička varijabla PATH izgleda ovako …
Prije:
F: / Users / Johnny / Anaconda; C: / Users / Johnny / Anaconda / Scripts
Nakon:
F: / Users / Johnny / Anaconda; C: / Users / Johnny / Anaconda / Scripts;%OPENCV_DIR%\ bin
To je to, gotovi smo! FFMPEG je spreman za upotrebu!
Korak 4: Potvrdite test
Moramo testirati možemo li sada to učiniti u Anakondi (putem Spyder IDE -a):
- Uvezite OpenCV paket
- Koristite uslužni program FFMPEG (za čitanje/pisanje/obradu videozapisa)
Test 1: Možemo li uvesti OpenCV?
Da biste se uvjerili da je Anaconda sada u mogućnosti uvesti paket OpenCV-Python (naime, cv2), izdajte ovo na konzoli IPython:
import cv2
ispis cv2._ verzija_
Ako je paket cv2 uvezen u redu bez grešaka, a verzija cv2 je ispisana, onda smo svi u redu!
Test 2: Možemo li koristiti FFMPEG kodek?
Stavite uzorak
input_video.mp4
video datoteka u direktoriju. Želimo testirati možemo li:
- pročitajte ovu.mp4 video datoteku i
- napisati novu video datoteku (može biti.avi ili.mp4 itd.)
Da bismo to učinili, moramo imati testni python kod, nazvati ga test.py. Stavite ga u isti direktorij kao i uzorak
input_video.mp4
file.
Ovo je šta
test.py
može izgledati ovako (Napomena: veliko hvala Peteovim i Warrenovim prijedlozima u polju za komentare - zamijenio sam svoj originalni testni kod sa njegovim - sami ga testirajte i obavijestite nas ako ovo bolje funkcionira):
import cv2
cap = cv2. VideoCapture ("input_video.mp4") print cap.isOpened () # True = čitanje videozapisa uspješno. Netačno - ne možete pročitati video. fourcc = cv2. VideoWriter_fourcc (*'XVID') out = cv2. VideoWriter ("output_video.avi", fourcc, 20.0, (640, 360)) print out.isOpened () # True = uspješno ispišite video zapis. Netačno - ne možete zapisati video zapis. cap.release () out.release ()
Ovaj test je VEOMA VAŽAN. Ako želite obraditi video datoteke, morate osigurati da Anaconda / Spyder IDE može koristiti FFMPEG (video kodek). Trebali su mi dani da ga pokrenem. Ali nadam se da će vam trebati mnogo manje vremena!:) Napomena: još jedan vrlo važan savjet pri korištenju Anaconda Spyder IDE -a. Obavezno provjerite trenutni radni imenik (CWD) !!!
Korak 5: Napravite kôd za prepoznavanje lica
Gol
U ovoj sesiji,
- Vidjet ćemo osnove prepoznavanja lica pomoću Haar Cascade Classifikatora zasnovanih na značajkama
- Isto ćemo proširiti za otkrivanje očiju itd
Haar-kaskadno otkrivanje u OpenCV-u
Ovdje ćemo se pozabaviti otkrivanjem. OpenCV već sadrži mnoge unaprijed obučene klasifikatore za lice, oči, osmijeh itd. Te XML datoteke pohranjene su u datoteci opencv/data/haarcascades/. Napravimo detektor lica i očiju s OpenCV -om. Prvo moramo učitati potrebne XML klasifikatore. Zatim učitajte našu ulaznu sliku (ili video zapis) u načinu rada u sivim tonovima ILI možemo koristiti kameru (za otkrivanje lica u stvarnom vremenu)
uvoz numpy kao np
import cv2 face_cascade = cv2. CascadeClassifier ('F:/Program Files/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml') eye_cascade = cv2. CascadeClassifier ('F:/Program Files/opencv /cascar/datacade/datacade.xml ') cap = cv2. VideoCapture (0) while 1: ret, img = cap.read () grey = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) lica = face_cascade.detectMultiScale (sivo, 1.5, 5) za (x, y, w, h) u licima: cv2.pravokutnik (img, (x, y), (x+w, y+h), (255, 0, 0), 2) roi_gray = sivo [y: y +h, x: x+w] roi_color = img [y: y+h, x: x+w] eyes = eye_cascade.detectMultiScale (roi_gray) za (ex, ey, ew, eh) u očima: cv2.rectangle (roi_color, (ex, ey), (ex +ew, ey +eh), (0, 255, 0), 2) ispis "pronađeno" +str (len (lica)) +"lice (a)" cv2.imshow ('img', img) k = cv2.waitKey (30) & 0xff ako je k == 27: break cap.release () cv2.destroyAllWindows ()
Korak 6: Napravite kôd za kreiranje skupa podataka
Radimo prepoznavanje lica, pa će vam trebati neke slike lica! Možete stvoriti vlastiti skup podataka ili započeti s jednom od dostupnih baza podataka o licu, https://face-rec.org/databases/ daje vam ažuriran pregled. Tri su zanimljive baze podataka (dijelovi opisa citirani su sa
- AT&T Facedatabase
- Baza podataka Facebooka Yale A
- Proširena baza podataka Yale Facedata B
OVDJE koristim vlastiti skup podataka…. Uz pomoć koda koji je dat u nastavku:
uvoz numpy kao np
import cv2 face_cascade = cv2. CascadeClassifier ('F:/Program Files/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml') cap = cv2. VideoCapture (0) id = raw_input ('unesite korisnički ID') sampleN = 0; dok je 1: ret, img = cap.read () sivo = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) lica = face_cascade.detectMultiScale (sivo, 1.3, 5) za (x, y, w, h) u licima: sampleN = uzorakN+1; cv2.imwrite ("F:/Program Files/projects/face_rec/faceData/User."+str (id)+"."+str (sampleN)+".jpg", sivo [y: y+h, x: x+w]) cv2.rectangle (img, (x, y), (x+w, y+h), (255, 0, 0), 2) cv2.waitKey (100) cv2.imshow ('img', img) cv2.waitKey (1) if sampleN> 20: break cap.release () cv2.destroyAllWindows ()
Korak 7: Napravite kôd za obuku prepoznavača
Kreirajte funkciju za pripremu seta za obuku
Sada ćemo definirati funkciju
getImagesWithID (path)
koji uzima apsolutni put do baze podataka kao ulazni argument i vraća hrpu od 2 liste, jedna koja sadrži otkrivena lica, a druga koja sadrži odgovarajuću oznaku za to lice. Na primjer, ako i -ti indeks na listi lica predstavlja 5. pojedinca u bazi podataka, tada odgovarajuća i -ta lokacija na listi oznaka ima vrijednost jednaku 5.
Sada pretvorite lica skupa podataka (koja su stvorena u koraku 6) u.yml datoteku uz pomoć koda koji je dolje naveden:
import os
import numpy kao np import cv2 iz PIL -a import Image # Za prepoznavanje lica koristićemo LBPH prepoznavač lica prepoznavač = cv2.createLBPHFaceRecognizer (); path = "F:/Program Files/projects/face_rec/faceData" def getImagesWithID (path): imagePaths = [os.path.join (path, f) for f in os.listdir (path)] # ispis image_path #getImagesWithID (put) lica = ID -ovi = za imagePath u imagePaths: # Pročitajte sliku i pretvorite je u sivu skalu licaImg = Image.open (imagePath).convert ('L') faceNP = np.array (faceImg, 'uint8') # Nabavite oznaku slike ID = int (os.path.split (imagePath) [-1].split (".") [1]) # Otkrijte lice na slici ID lica.append (faceNP). (ID) cv2.imshow ("Dodavanje lica za treniranje", faceNP) cv2.waitKey (10) vraćanje np.array (ID -ovi), lica lica, lica = getImagesWithID (putanja) prepoznavač.train (lica, ID -ovi) prepoznavač.save ("F:/Programske datoteke/projekti/face_rec/faceREC/trainingdata.yml") cv2.destroyAllWindows ()
pomoću ovog koda sav skup podataka o licima pretvoren u jednu.yml datoteku …..path lokacija je ("F:/Programske datoteke/projekti/face_rec/faceREC/trainingdata.yml")
Korak 8: Napravite kôd za prepoznavanje lica i rezultata
Guyzz, ovo je posljednji korak u kojem možemo stvoriti kôd za prepoznavanje lica uz pomoć vaše web kamere. U ovom koraku postoje dvije operacije koje će se izvesti…. 1. snimanje video zapisa sa kamere 2. uporedite ga sa.yml datotekom
uvoz numpy kao npimport cv2 face_cascade = cv2. CascadeClassifier ('F:/Program Files/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml') cap = cv2. VideoCapture (0) rec = cv2.createLBPHere rec.load ("F:/Programske datoteke/projekti/face_rec/faceREC/trainingdata.yml") id = 0 font = cv2.cv. InitFont (cv2.cv. CV_FONT_HERSHEY_COMPLEX_SMALL, 5, 1, 0, 4) dok je 1: ret, img = cap.read () sivo = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) lica = face_cascade.detectMultiScale (sivo, 1,5, 5) za (x, y, w, h) u licima: cv2.rectangle (img, (x, y), (x+w, y+h), (255, 0, 0), 2) id, conf = rec.predict (sivo [y: y+h, x: x+w]) if (id == 2): id = "alok" if id == 1: id = "alok" if id == 3: id = "anjali" if id == 4: id = "Gaurav" if id = = 5: id = 'rahul' if id == 6: id = "akshay" cv2.cv. PutText (cv2.cv.fromarray (img), str (id), (x, y+h), font, 255) cv2.imshow ('img', img) if cv2.waitKey (1) == ord ('q'): break cap.release ()
cv2.destroyAllWindows ()
i konačno će vam rezultat doći pred oči …… možete također preuzeti zip datoteku ispod veze: Kliknite ovdje za preuzimanje kodova Dakle, u ovom uputstvu izvršili smo zadatak otkrivanja lica+prepoznavanja pomoću OpenCV -a …..ako ste ovako instruktivno ….. plzzz pretplatite me i glasajte za mene …..hvala prijateljima:)
Preporučuje se:
Ogledalo za prepoznavanje lica sa tajnim odjeljkom: 15 koraka (sa slikama)
Ogledalo za prepoznavanje lica s tajnim pretincem: Uvijek su me zanimali uvijek kreativni tajni odjeljci koji se koriste u pričama, filmovima i slično. Stoga sam, kad sam vidio natjecanje u tajnim odjeljcima, odlučio eksperimentirati s tom idejom i napraviti ogledalo običnog izgleda koje otvara
Otkrivanje lica, obuka i prepoznavanje Opencv lica: 3 koraka
Otkrivanje lica, obuka i prepoznavanje lica Opencv: OpenCV je biblioteka računarskog vida otvorenog koda koja je vrlo popularna za obavljanje osnovnih zadataka obrade slika, kao što su zamućivanje, miješanje slika, poboljšanje slike, kao i kvaliteta videa, određivanje praga itd. Osim obrade slike, to je prov
Prepoznavanje lica u stvarnom vremenu na RaspberryPi-4: 6 koraka (sa slikama)
Detekcija lica u stvarnom vremenu na RaspberryPi-4: U ovom Instructableu ćemo izvršiti detekciju lica u stvarnom vremenu na Raspberry Pi 4 sa Shunya O/S koristeći Shunyaface Library. Prateći ovaj vodič možete postići brzinu kadrova otkrivanja 15-17 na RaspberryPi-4
Sigurnosni sistem za prepoznavanje lica za hladnjak sa Raspberry Pi: 7 koraka (sa slikama)
Sigurnosni sistem za prepoznavanje lica za hladnjak s Raspberry Pi: Pretražujući internet otkrio sam da cijene sigurnosnih sistema variraju od 150 do 600 USD i više, ali ne mogu se sva rješenja (čak ni ona vrlo skupa) integrirati s drugim pametni alati u vašem domu! Na primjer, ne možete postaviti
Prepoznavanje lica u stvarnom vremenu: projekt s kraja na kraj: 8 koraka (sa slikama)
Prepoznavanje lica u stvarnom vremenu: projekt s kraja na kraj: U mom zadnjem vodiču o istraživanju OpenCV-a naučili smo AUTOMATSKO VISION OBJEKTNO PRAĆENJE. Sada ćemo koristiti naš PiCam za prepoznavanje lica u stvarnom vremenu, kao što možete vidjeti u nastavku: Ovaj projekt je urađen s ovom fantastičnom " bibliotekom računarskog vida otvorenog koda "