Kazalo:
- 1. korak: Namestite Anacondo
- 2. korak: Prenesite Open CV Package
- 3. korak: Nastavite okoljske spremenljivke
- 4. korak: Potrdite preizkus
- 5. korak: Naredite kodo za zaznavanje obrazov
- 6. korak: Ustvarite kodo za ustvarjanje nabora podatkov
- 7. korak: Naredite kodo za usposabljanje prepoznavalca
- 8. korak: Naredite kodo za prepoznavanje obrazov in rezultatov
Video: Zaznavanje obrazov+prepoznavanje: 8 korakov (s slikami)
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:08
To je preprost primer odkrivanja in prepoznavanja obrazov z OpenCV s kamere. OPOMBA: Ta projekt sem naredil za tekmovanje senzorjev in kamero sem uporabil kot senzor za sledenje in prepoznavanje obrazov. Torej, naš cilj Na tej seji 1. Namestite Anacondo 2. Prenesite paket odprtega življenjepisa 3. Nastavite okoljske spremenljivke 4. Preizkusite za potrditev 5 Naredite kodo za zaznavanje obrazov 6. Naredite kodo za ustvarjanje nabora podatkov 7. Naredite kodo za usposabljanje prepoznavalca 8. Naredite kodo za prepoznavanje obrazov in rezultat.
1. korak: Namestite Anacondo
Anaconda je v bistvu lepo zapakiran Python IDE, ki je dobavljen s tonami uporabnih paketov, kot so NumPy, Pandas, IPython Notebook itd. Zdi se, da ga priporočajo povsod v znanstveni skupnosti. Preverite Anacondo, da jo namestite.
2. korak: Prenesite Open CV Package
Najprej pojdite na uradno spletno mesto OpenCV, da prenesete celoten paket OpenCV. Izberite različico, ki vam je všeč (2.x ali 3.x). Jaz sem na Python 2.x in OpenCV 2.x - predvsem zato, ker so tako nastavljeni/temeljijo na vadnicah OpenCV -Python.
V mojem primeru sem paket (v bistvu mapo) izvlekel naravnost na svoj pogon F. (F: / opencv).
3. korak: Nastavite okoljske spremenljivke
Kopirajte in prilepite datoteko cv2.pyd
Imenik paketov spletnih mest Anaconda (npr. F: / Program Files / Anaconda2 / Lib / site-packages v mojem primeru) vsebuje pakete Python, ki jih lahko uvozite. Naš cilj je kopirati in prilepiti datoteko cv2.pyd v ta imenik (tako da lahko uporabimo import cv2 v naših kodah Python.)
Če želite to narediti, kopirajte datoteko cv2.pyd …
Iz tega imenika OpenCV (začetni del se lahko na vašem računalniku nekoliko razlikuje):
# Python 2.7 in 64-bitni stroj: F: / opencv / build / python / 2.7 / x64# Python 2.7 in 32-bitni stroj: F: / opencv / build / python / 2.7 / x84
V ta imenik Anaconda (začetni del se lahko na vašem računalniku nekoliko razlikuje):
F: / Program Files / Anaconda2 / Lib / site-packages
Po izvedbi tega koraka bomo zdaj lahko uporabljali import cv2 v kodi Python. Ampak, še vedno moramo narediti še nekaj več dela, da bo FFMPEG (video kodek) deloval (da nam bo omogočil obdelavo videov.)
Z desno tipko miške kliknite »Moj računalnik« (ali »Ta računalnik« v sistemu Windows 8.1)-> levo kliknite Lastnosti-> levo kliknite zavihek »Napredno«-> levo kliknite gumb »Spremenljivke okolja …«. Dodajte novo uporabniško spremenljivko da pokažem na OpenCV (bodisi x86 za 32-bitni sistem ali x64 za 64-bitni sistem.) Trenutno sem na 64-bitnem računalniku.
32-bitniOPENCV_DIRC: / opencv / build / x86 / vc12
64-bitniOPENCV_DIRC: / opencv / build / x64 / vc12
Dodajte %OPENCV_DIR %\ bin v PATH uporabniške spremenljivke.
Moja uporabniška spremenljivka PATH je na primer videti tako …
Pred:
F: / Users / Johnny / Anaconda; C: / Users / Johnny / Anaconda / Scripts
Po:
F: / Users / Johnny / Anaconda; C: / Users / Johnny / Anaconda / Scripts;%OPENCV_DIR%\ bin
To je to, končali smo! FFMPEG je pripravljen za uporabo!
4. korak: Potrdite preizkus
Preveriti moramo, ali lahko to storimo v Anacondi (prek Spyder IDE):
- Uvozi paket OpenCV
- Uporabite pripomoček FFMPEG (za branje/pisanje/obdelavo videoposnetkov)
Test 1: Ali lahko uvozimo OpenCV?
Če želite prepričati, da lahko Anaconda uvozi paket OpenCV-Python (namreč cv2), Te težave izdajte v konzoli IPython:
uvoz cv2
print cv2._ version_
Če je paket cv2 uvožen brez napak in je različica cv2 natisnjena, potem smo vsi v redu!
Test 2: Ali lahko uporabimo kodek FFMPEG?
Postavite vzorec
input_video.mp4
video datoteko v imeniku. Preizkusiti želimo, ali lahko:
- preberite to.mp4 video datoteko in
- napišite novo video datoteko (lahko je.avi ali.mp4 itd.)
Če želite to narediti, moramo imeti preskusno kodo python, ki jo imenujemo test.py. Postavite ga v isti imenik kot vzorec
input_video.mp4
mapa.
To je kaj
test.py
lahko izgleda tako (Opomba: najlepša hvala Petejevim in Warrenovim predlogom v polju za komentarje - prvotno preskusno kodo sem zamenjal z njegovo - preizkusite jo sami in nam sporočite, če to deluje bolje):
uvoz cv2
cap = cv2. VideoCapture ("input_video.mp4") print cap.isOpened () # True = uspešno prebral video. Napačno - ne preberite videoposnetka. fourcc = cv2. VideoWriter_fourcc (*'XVID') out = cv2. VideoWriter ("output_video.avi", fourcc, 20.0, (640, 360)) print out.isOpened () # True = uspešno izpisati video. Napačno - ne zapišite videoposnetka. cap.release () out.release ()
Ta test je ZELO POMEMBEN. Če želite obdelati video datoteke, morate zagotoviti, da lahko Anaconda / Spyder IDE uporablja FFMPEG (video kodek). Potrebovali smo dneve, da sem začel delovati. Upam pa, da vam bo vzelo veliko manj časa!:) Opomba: še en zelo pomemben namig pri uporabi Anaconda Spyder IDE. Preverite trenutni delovni imenik (CWD) !!!
5. korak: Naredite kodo za zaznavanje obrazov
Cilj
Na tej seji
- Videli bomo osnove zaznavanja obrazov s pomočjo Cascade Clasifiers, ki temeljijo na funkcijah Haar
- Enako bomo razširili za odkrivanje oči itd
Haar-cascade Detection v OpenCV
Tu se bomo ukvarjali z odkrivanjem. OpenCV že vsebuje številne vnaprej usposobljene klasifikatorje za obraz, oči, nasmeh itd. Te datoteke XML so shranjene v mapi opencv/data/haarcascades/. Ustvarimo detektor obraza in oči z OpenCV. Najprej moramo naložiti zahtevane klasifikatorje XML. Nato naložite svojo vhodno sliko (ali video) v sivinah ALI lahko uporabimo kamero (za zaznavanje obrazov v realnem času)
uvoz numpy kot np
uvoz CV2 face_cascade = cv2. CascadeClassifier ('F: / Program Files / opencv / Viri / podatki / haarcascades / haarcascade_frontalface_default.xml) eye_cascade = cv2. CascadeClassifier (' F: / Program Files / opencv / Viri / podatki / haarcascades / haarcascade_eye.xml ') cap = cv2. VideoCapture (0) medtem ko 1: ret, img = cap.read () siva = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) obrazi = face_cascade.detectMultiScale (siva, 1.5, 5) za (x, y, w, h) v obrazih: cv2.rectangle (img, (x, y), (x+w, y+h), (255, 0, 0), 2) roi_gray = siva [y: y +h, x: x+w] roi_color = img [y: y+h, x: x+w] oči = eye_cascade.detectMultiScale (roi_gray) za (ex, ey, ew, eh) v očeh: cv2.rectangle (roi_color, (ex, ey), (ex +ew, ey +eh), (0, 255, 0), 2) natisni "najdeno" +str (len (obrazi)) +"obraz (i)" cv2.imshow ('img', img) k = cv2.waitKey (30) & 0xff if k == 27: break cap.release () cv2.destroyAllWindows ()
6. korak: Ustvarite kodo za ustvarjanje nabora podatkov
Delamo prepoznavanje obrazov, zato boste potrebovali nekaj slik obraza! Ustvarite lahko lasten nabor podatkov ali začnete z eno od razpoložljivih baz podatkov o obrazih, https://face-rec.org/databases/ vam ponuja posodobljen pregled. Tri zanimive baze podatkov so (deli opisa so citirani s spletnega mesta
- Zbirka podatkov AT&T Facedatabase
- Zbirka podatkov Yale Facedata A
- Razširjena zbirka podatkov Yale Facedata B
TUKAJ uporabljam svoj nabor podatkov…. S pomočjo spodaj navedene kode:
uvoz numpy kot 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; medtem ko 1: ret, img = cap.read () siva = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) obrazi = face_cascade.detectMultiScale (siva, 1.3, 5) za (x, y, w, h) v obrazih: vzorecN = vzorecN+1; cv2.imwrite ("F:/Program Files/projects/face_rec/faceData/User."+str (id)+"."+str (sampleN)+".jpg", siva [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) če je vzorecN> 20: break cap.release () cv2.destroyAllWindows ()
7. korak: Naredite kodo za usposabljanje prepoznavalca
Ustvarite funkcijo za pripravo kompleta za usposabljanje
Zdaj bomo definirali funkcijo
getImagesWithID (pot)
ki kot vhodni argument vzame absolutno pot do podatkovne zbirke in vrne nabor 2 seznamov, od katerih eden vsebuje zaznane obraze, drugi pa ustrezno oznako za ta obraz. Na primer, če i -ti indeks na seznamu obrazov predstavlja 5. posameznika v zbirki podatkov, ima ustrezna i -ta lokacija na seznamu oznak vrednost, ki je enaka 5.
Zdaj s pomočjo spodnje kode pretvorite obraze nabora podatkov (ki je ustvarjen v 6. koraku) v datoteko.yml:
uvoz os
import numpy as np import cv2 from PIL import Image # Za prepoznavanje obrazov bomo uporabili prepoznavalnik obrazov LBPH Face Recognizer = cv2.createLBPHFaceRecognizer (); path = "F:/Program Files/projects/face_rec/faceData" def getImagesWithID (pot): imagePaths = [os.path.join (pot, f) za f v os.listdir (pot)] # print image_path #getImagesWithID (pot) obrazov = ID -jev = za imagePath v imagePaths: # preberite sliko in jo pretvorite v sive odtenkeImg = Image.open (imagePath).convert ('L') faceNP = np.array (obrazovImg, 'uint8') # Pridobite oznako ID slike = int (os.path.split (imagePath) [-1].split (".") [1]) # Zaznajte obraz na sliki ID obrazov.append (faceNP). (ID) cv2.imshow ("Dodajanje obrazov za treniranje", faceNP) cv2.waitKey (10) vrne np.array (ID -ji), obrazi Ids, obrazi = getImagesWithID (pot) prepoznaval.train (obrazi, ID -ji) prepoznaval.save ("F:/Programske datoteke/projekti/face_rec/faceREC/trainingdata.yml") cv2.destroyAllWindows ()
z uporabo te kode se vsi nabori obrazov pretvorijo v eno datoteko.yml …..pot poti je ("F:/Program Files/projects/face_rec/faceREC/trainingdata.yml")
8. korak: Naredite kodo za prepoznavanje obrazov in rezultatov
Guyzz, to je zadnji korak, v katerem lahko ustvarimo kodo za prepoznavanje obrazov s pomočjo vaše spletne kamere. V tem koraku sta dve operaciji, ki ju boste izvedli … 1. zajem videoposnetka z kamere 2. primerjajte ga z datoteko.yml
uvoz numpy kot 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:/Program Files/projects/face_rec/faceREC/trainingdata.yml") id = 0 font = cv2.cv. InitFont (cv2.cv. CV_FONT_HERSHEY_COMPLEX_SMALL, 5, 1, 0, 4) medtem ko 1: ret, img = cap.read () siva = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) obrazi = face_cascade.detectMultiScale (siva, 1,5, 5) za (x, y, w, h) v obrazih: 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), pisava, 255) cv2.imshow ('img', img) if cv2.waitKey (1) == ord ('q'): break cap.release ()
cv2.destroyAllWindows ()
in končno vam bo rezultat prišel pred oči …… lahko tudi prenesete datoteko zip iz spodnje povezave: kliknite tukaj, če želite prenesti kode. Torej, v tem navodilu smo opravili nalogo zaznavanja obrazov+prepoznavanje z uporabo OpenCV….. če ste tako kot ta navodila ….. plzzz naroči me in glasuj zame ….. hvala prijatelji:)
Priporočena:
Abellcadabra (sistem zaklepanja vrat za prepoznavanje obrazov): 9 korakov
Abellcadabra (Sistem zaklepanja vrat za prepoznavanje obrazov): Med karanteno sem se nahajal in poskušal najti način, kako ubiti čas, tako da sem ustvaril prepoznavanje obrazov za hišna vrata. Poimenoval sem ga Abellcadabra - ki je kombinacija med Abracadabra, čarobno frazo z zvoncem na vratih, ki ga vzamem samo na zvonec. LOL
Odkrivanje obrazov Opencv, usposabljanje in prepoznavanje: 3 koraki
Odkrivanje, usposabljanje in prepoznavanje obrazov Opencv: OpenCV je odprtokodna knjižnica računalniškega vida, ki je zelo priljubljena za izvajanje osnovnih nalog obdelave slik, kot so zameglitev, mešanje slik, izboljšanje slike, pa tudi kakovost videa, določanje praga itd. to je prov
Prepoznavanje obrazov in identifikacija - Arduino Face ID z uporabo OpenCV Python in Arduino .: 6 korakov
Prepoznavanje obrazov in identifikacija | Arduino Face ID z uporabo OpenCV Python in Arduino .: Prepoznavanje obraza AKA Face ID je ena najpomembnejših značilnosti mobilnih telefonov danes. Tako sem imel vprašanje " ali lahko dobim ID obraza za svoj projekt Arduino " in odgovor je pritrdilen … Moje potovanje se je začelo na naslednji način: 1. korak: Dostop do nas
Pametna ključavnica za prepoznavanje obrazov z LTE Pi HAT: 4 koraki
Pametna ključavnica za prepoznavanje obrazov Z LTE Pi HAT: Prepoznavanje obrazov se vse bolj uporablja, z njo lahko naredimo pametno ključavnico
Prepoznavanje obrazov v realnem času: projekt od konca do konca: 8 korakov (s slikami)
Prepoznavanje obrazov v realnem času: projekt od konca do konca: Na moji zadnji vadnici, ki je raziskovala OpenCV, smo se naučili AUTOMATIC VISION OBJECT TRACKING. Zdaj bomo uporabili naš PiCam za prepoznavanje obrazov v realnem času, kot lahko vidite spodaj: Ta projekt je bil narejen s to fantastično knjižnico odprtokodne računalniške vizije