Sadržaj:
- Korak 1: Instalirajte Anacondu
- Korak 2: Preuzmite Open CV paket
- Korak 3: Postavite varijable okoliša
- Korak 4: Testirajte za potvrdu
- Korak 5: Napravite kôd za prepoznavanje lica
- Korak 6: Napravite kôd za stvaranje 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 promjena: 2024-01-30 09:37
Ovo je jednostavan primjer pokretanja otkrivanja i prepoznavanja lica s OpenCV -om s kamere. NAPOMENA: OVAJ PROJEKT IZRADIO SAM ZA NATJEČAJ 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 stvaranje 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 biti lijepo upakiran Python IDE koji se isporučuje s tonama korisnih paketa, kao što su NumPy, Pandas, IPython Notebook itd. Čini se da se preporučuje svugdje u znanstvenoj zajednici. Provjerite instaliranje Anaconde.
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 se na ovaj način postavljaju/temelje vodiči za OpenCV -Python.
U mom slučaju, izvadio sam paket (u biti mapu) ravno na svoj F pogon. (F: / opencv).
Korak 3: Postavite varijable okoliša
Kopirajte i zalijepite datoteku cv2.pyd
Direktorij Anaconda Site-packages (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šem računalu):
# Python 2.7 i 64-bitni stroj: F: / opencv / build / python / 2.7 / x64# Python 2.7 i 32-bitni stroj: F: / opencv / build / python / 2.7 / x84
U ovaj direktorij Anaconda (početni dio može se malo razlikovati na vašem stroju):
F: / Program Files / Anaconda2 / Lib / site-paketi
Nakon izvođenja 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 "Ovo računalo" u sustavu Windows 8.1)-> lijevom tipkom miša kliknite Svojstva-> lijevom tipkom miša kliknite karticu "Napredno"-> lijevo kliknite gumb "Varijable okruženja …". Dodajte novu korisničku varijablu da pokažem na OpenCV (ili x86 za 32-bitni sustav ili x64 za 64-bitni sustav.) Trenutno sam na 64-bitnom stroju.
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: / Korisnici / Johnny / Anaconda; C: / Korisnici / Johnny / Anaconda / Skripte
Nakon:
F: / Korisnici / Johnny / Anaconda; C: / Korisnici / Johnny / Anaconda / Skripte;%OPENCV_DIR%\ bin
Ovo smo gotovi smo! FFMPEG je spreman za upotrebu!
Korak 4: Testirajte za potvrdu
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?
Kako bismo se uvjerili da je Anaconda sada u mogućnosti uvesti paket OpenCV-Python (naime, cv2), izdajte ih na konzoli IPython:
uvoz cv2
ispis cv2._ verzija_
Ako je paket cv2 uvezen ok bez grešaka, a verzija cv2 je ispisana, onda smo svi dobri!
Test 2: Možemo li koristiti kodek FFMPEG?
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
datoteka.
To je što
test.py
može izgledati ovako (Napomena: puno zahvaljujući Peteovim i Warrenovim prijedlozima u polju za komentare - zamijenio sam svoj izvorni testni kod s njegovim - sami ga testirajte i javite nam ako ovo bolje funkcionira):
uvoz 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 videozapis. cap.release () out.release ()
Ovaj test je VRLO VAŽAN. Ako želite obraditi video datoteke, morate osigurati da Anaconda / Spyder IDE može koristiti FFMPEG (video kodek). Trebali su mi dani da to uspijem. 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
Cilj
U ovoj sesiji,
- Vidjet ćemo osnove detekcije lica pomoću Cascade Clasifikatora temeljenih na Haar 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:/Programske datoteke/opencv /cascade_data.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.pravokutnik (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 stvaranje skupa podataka
Radimo prepoznavanje lica, pa će vam trebati 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 s
- AT&T Facedatabase
- Baza podataka Facebooka Yale A
- Proširena baza podataka Facebooka Yale B
OVDJE koristim svoj vlastiti skup podataka …. Uz pomoć koda koji je dan ispod:
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 ('enter user 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.pravokutnik (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
Izradite funkciju za pripremu seta za obuku
Sada ćemo definirati funkciju
getImagesWithID (put)
koja uzima apsolutni put do baze podataka kao ulazni argument i vraća hrpu od 2 popisa, jedan koji sadrži otkrivena lica, a drugi koji sadrži odgovarajuću oznaku za to lice. Na primjer, ako i -ti indeks na popisu lica predstavlja 5. pojedinca u bazi podataka, tada odgovarajuće i -to mjesto na popisu oznaka ima vrijednost jednaku 5.
Sada pretvorite lica skupa podataka (koja su stvorena u koraku 6) u.yml datoteku uz pomoć koda koji je dan ispod:
uvoz os
import numpy as np import cv2 from PIL import Image # Za prepoznavanje lica upotrijebit ćemo LBPH Face Recognizer 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 u sive tonove licaImg = Image.open (imagePath).convert ('L') faceNP = np.array (licaImg, 'uint8') # Dobijte oznaku slike ID = int (os.path.split (imagePath) [-1].split (".") [1]) # Otkrijte lice na slici lica.append (faceNP) IDs.append (ID) cv2.imshow ("Dodavanje lica za treniranje", faceNP) cv2.waitKey (10) vraća np.array (ID -ove), lica ID -ove, lica = getImagesWithID (put) prepoznavač.train (lica, ID -ove) 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:/Program Files/projects/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 videozapisa s kamere 2. usporedite ga sa svojom.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 …… također možete preuzeti zip datoteku ispod veze: Kliknite ovdje za preuzimanje kodova Dakle, u ovoj uputi izvršili smo zadatak otkrivanja lica+prepoznavanja pomoću OpenCV -a …..ako ste ovako instruktivno ….. plzzz pretplatite me se i glasajte za mene …..hvala prijateljima:)
Preporučeni:
Ogledalo za prepoznavanje lica s tajnim pretincem: 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. Pa 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 knjižnica računalnog vida otvorenog koda koja je vrlo popularna za obavljanje osnovnih zadataka obrade slike, 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 izvršit ćemo detekciju lica u stvarnom vremenu na Raspberry Pi 4 pomoću Shunya O/S koristeći knjižnicu Shunyaface. Slijedom ovog vodiča možete postići brzinu snimanja od 15 do 17 na RaspberryPi-4
Sigurnosni sustav za prepoznavanje lica za hladnjak s Raspberry Pi: 7 koraka (sa slikama)
Sigurnosni sustav za prepoznavanje lica za hladnjak s Raspberry Pi: Pretražujući internet otkrio sam da cijene sigurnosnih sustava 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 OpenCV-u 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 napravljen s ovom fantastičnom " bibliotekom računarskog vida otvorenog koda "