Sisällysluettelo:
- Vaihe 1: Asenna Anaconda
- Vaihe 2: Lataa avoin CV -paketti
- Vaihe 3: Aseta ympäristömuuttujat
- Vaihe 4: Testaa vahvistaaksesi
- Vaihe 5: Tee koodi kasvojentunnistukseen
- Vaihe 6: Tee koodi tietojoukon luomiseksi
- Vaihe 7: Tee koodi, joka opettaa tunnistimen
- Vaihe 8: Tee koodi kasvojen ja tuloksen tunnistamiseksi
Video: Kasvontunnistus+tunnistus: 8 vaihetta (kuvien kanssa)
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:03
Tämä on yksinkertainen esimerkki kasvojen tunnistamisesta ja tunnistamisesta OpenCV: n avulla kamerasta. HUOMAUTUS: TEIN TÄMÄN PROJEKTIN ANTURIKILPAILUUN JA KÄYTIN KAMERAA ANTURINA SEURAAMIS- JA TUNNISTUSKASVOIHIN. Tavoitteemme Tässä istunnossa 1. Asenna Anaconda 2. Lataa avoin CV -paketti 3. Aseta ympäristömuuttujat 4. Vahvista testi 5 Tee koodi kasvojentunnistukseen 6. Tee koodi tietojoukon luomiseksi 7. Tee koodi tunnistimen kouluttamiseksi 8. Tee koodi kasvojen tunnistamiseksi ja tulos.
Vaihe 1: Asenna Anaconda
Anaconda on pohjimmiltaan kauniisti pakattu Python IDE, joka toimitetaan tonneilla hyödyllisiä paketteja, kuten NumPy, Pandas, IPython Notebook jne. Sitä näyttää suositeltavan kaikkialla tiedeyhteisössä. Tarkista Anaconda sen asentamiseksi.
Vaihe 2: Lataa avoin CV -paketti
Siirry ensin OpenCV -paketin viralliselle OpenCV -sivustolle. Valitse haluamasi versio (2.x tai 3.x). Käytän Python 2.x- ja OpenCV 2.x -käyttöjärjestelmiä - lähinnä siksi, että OpenCV -Python -opetusohjelmat asennetaan/perustuvat näin.
Minun tapauksessani olen purkanut paketin (lähinnä kansion) suoraan F -asemaan. (F: / opencv).
Vaihe 3: Aseta ympäristömuuttujat
Kopioi ja liitä cv2.pyd -tiedosto
Anaconda-sivustopakettien hakemisto (esim. F: / Program Files / Anaconda2 / Lib / site-package minun tapauksessani) sisältää tuodut Python-paketit. Tavoitteenamme on kopioida ja liittää cv2.pyd -tiedosto tähän hakemistoon (jotta voimme käyttää tuonti -cv2 -tiedostoa Python -koodeissamme.)
Kopioi cv2.pyd -tiedosto…
Tästä OpenCV -hakemistosta (alkuosa saattaa olla hieman erilainen koneellasi):
# Python 2.7 ja 64-bittinen kone: F: / opencv / build / python / 2.7 / x64# Python 2.7 ja 32-bittinen kone: F: / opencv / build / python / 2.7 / x84
Tähän Anaconda -hakemistoon (alkuosa saattaa olla hieman erilainen koneellasi):
F: / Ohjelmatiedostot / Anaconda2 / Lib / sivustopaketit
Tämän vaiheen suorittamisen jälkeen voimme nyt käyttää tuonti -cv2 -koodia Python -koodissa. MUTTA, meidän on vielä tehtävä hieman enemmän työtä saadaksemme FFMPEG: n (videokoodekin) toimimaan (jotta voimme käsitellä esimerkiksi videoita.)
Napsauta hiiren kakkospainikkeella "Oma tietokone" (tai "Tämä tietokone" Windows 8.1: ssä)-> napsauta hiiren kakkospainikkeella Ominaisuudet-> napsauta hiiren kakkospainikkeella "Lisäasetukset"-> napsauta hiiren kakkospainikkeella "Ympäristömuuttujat …" -painiketta. Lisää uusi käyttäjämuuttuja osoittamaan OpenCV: tä (joko x86 32-bittiselle järjestelmälle tai x64 64-bittiselle järjestelmälle.) Olen tällä hetkellä 64-bittisellä koneella.
32-bittinen OPENCV_DIRC: / opencv / build / x86 / vc12
64-bittinen OPENCV_DIRC: / opencv / build / x64 / vc12
Liitä %OPENCV_DIR %\ bin käyttäjämuuttujan polkuun.
Esimerkiksi PATH -käyttäjämuuttujani näyttää tältä…
Ennen:
F: / Käyttäjät / Johnny / Anaconda; C: / Käyttäjät / Johnny / Anaconda / Scripts
Jälkeen:
F: / Käyttäjät / Johnny / Anaconda; C: / Käyttäjät / Johnny / Anaconda / Scripts;%OPENCV_DIR%\ bin
Tässä me olemme valmiita! FFMPEG on käyttövalmis!
Vaihe 4: Testaa vahvistaaksesi
Meidän on testattava, voimmeko tehdä nämä nyt Anacondassa (Spyder IDE: n kautta):
- Tuo OpenCV -paketti
- Käytä FFMPEG -apuohjelmaa (videoiden lukemiseen/kirjoittamiseen/käsittelyyn)
Testi 1: Voimmeko tuoda OpenCV: n?
Varmistaakseen, että Anaconda pystyy nyt tuomaan OpenCV-Python-paketin (nimittäin cv2), ongelma IPython -konsolissa:
tuoda cv2
tulosta cv2._ -versio_
Jos paketti cv2 tuodaan ok ilman virheitä ja cv2 -versio tulostetaan, olemme kaikki hyviä!
Testi 2: Voimmeko käyttää FFMPEG -koodekkia?
Aseta näyte
input_video.mp4
videotiedosto hakemistoon. Haluamme testata, pystymmekö:
- lue tämä.mp4 -videotiedosto ja
- kirjoittaa uuden videotiedoston (voi olla.avi tai.mp4 jne.)
Tätä varten meillä on oltava testipython -koodi, jota kutsutaan test.py. Aseta se samaan hakemistoon kuin näyte
input_video.mp4
tiedosto.
Tämä on mitä
test.py
saattaa näyttää tältä (Huomaa: kiitos paljon Pete'n ja Warrenin ehdotuksista kommenttikentässä - olen korvannut alkuperäisen testikoodin hänen omaansa - testaa se itse ja kerro meille, toimiiko tämä paremmin):
tuoda cv2
cap = cv2. VideoCapture ("input_video.mp4") print cap.isOpened () # True = videon lukeminen onnistui. Väärä - videon lukeminen epäonnistui. fourcc = cv2. VideoWriter_fourcc (*'XVID') out = cv2. VideoWriter ("output_video.avi", fourcc, 20.0, (640, 360)) print out.isOpened () # True = videon kirjoitus onnistui. Väärä - videon kirjoittaminen epäonnistui. cap.release () out.release ()
Tämä testi on TÄRKEÄÄ. Jos haluat käsitellä videotiedostoja, sinun on varmistettava, että Anaconda / Spyder IDE voi käyttää FFMPEG: tä (videokoodekki). Meni päiviä ennen kuin sain sen toimimaan. Mutta toivon, että se vie paljon vähemmän aikaa!:) Huomautus: vielä yksi erittäin tärkeä vinkki Anaconda Spyder IDE: tä käytettäessä. Muista tarkistaa nykyinen työhakemisto (CWD) !!!
Vaihe 5: Tee koodi kasvojentunnistukseen
Päämäärä
Tässä istunnossa
- Näemme kasvojentunnistuksen perusteet käyttämällä Haar-ominaisuuksiin perustuvia kaskadiluokittimia
- Laajennamme samaa silmien havaitsemiseen jne
Haar-kaskadin tunnistus OpenCV: ssä
Tässä käsitellään havaitsemista. OpenCV sisältää jo monia esikoulutettuja kasvojen, silmien, hymyn jne. Luokittelijoita. Nämä XML-tiedostot tallennetaan kansioon opencv/data/haarcascades/. Luodaan kasvojen ja silmän tunnistin OpenCV: llä. Ensin meidän on ladattava vaaditut XML -luokittelijat. Lataa sitten syöttökuvamme (tai -videomme) harmaasävytilassa TAI voimme käyttää kameraa (reaaliaikaiseen kasvojentunnistukseen)
tuo numpy np: nä
import cv2 face_cascade = cv2. CascadeClassifier ('F:/Ohjelmatiedostot/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml') eye_cascade = cv2. CascadeClassifier ('F:/Ohjelmatiedostot/opencv/sources/data/haarcascade.xml ') cap = cv2. VideoCapture (0), kun taas 1: ret, img = cap.read () harmaa = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) kasvot = face_cascade.detectMultiScale (harmaa, 1,5, 5) kohteelle (x, y, w, h) kasvoissa: cv2. suorakulmio (img, (x, y), (x+w, y+h), (255, 0, 0), 2) roi_gray = harmaa [y: y +h, x: x+w] roi_color = img [y: y+h, x: x+w] eyes = eye_cascade.detectMultiScale (roi_gray) for (ex, ey, ew, eh) in eyes: cv2.rectangle (roi_color, (ex, ey), (ex +ew, ey +eh), (0, 255, 0), 2) print "found" +str (len (kasvot)) +"kasvot" cv2.imshow ('img', img) k = cv2.waitKey (30) & 0xff, jos k == 27: break cap.release () cv2.destroyAllWindows ()
Vaihe 6: Tee koodi tietojoukon luomiseksi
Teemme kasvojentunnistusta, joten tarvitset joitain kasvokuvia! Voit joko luoda oman tietojoukon tai aloittaa jollakin käytettävissä olevista kasvotietokannoista, https://face-rec.org/databases/ tarjoaa ajantasaisen yleiskatsauksen. Kolme mielenkiintoista tietokantaa ovat (osia kuvauksesta on lainattu osoitteesta
- AT&T Facedatabase
- Yalen kasvotietokanta A
- Yalen laajennettu tietokanta B
TÄSTÄ käytän omaa tietojoukkoani…. Alla olevan koodin avulla:
tuo numpy np: nä
import cv2 face_cascade = cv2. CascadeClassifier ('F:/Ohjelmatiedostot/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml') cap = cv2. VideoCapture (0) id = raw_input ('enter user id') sampleN = 0; kun taas 1: ret, img = cap.read () grey = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) kasvot = face_cascade.detectMultiScale (harmaa, 1,3, 5) (x, y, w, h) kasvoissa: näyteN = näyte N+1; cv2.imwrite ("F:/Ohjelmatiedostot/projektit/face_rec/kasvotData/Käyttäjä."+str (id)+"."+str (näyteN)+".jpg", harmaa [y: y+h, x: x+w]) cv2. suorakulmio (img, (x, y), (x+w, y+h), (255, 0, 0), 2) cv2.waitKey (100) cv2.imshow ('img', img) cv2.waitKey (1) jos näyteN> 20: break cap.release () cv2.destroyAllWindows ()
Vaihe 7: Tee koodi, joka opettaa tunnistimen
Luo toiminto harjoitussarjan valmistamiseksi
Nyt määritellään funktio
getImagesWithID (polku)
joka ottaa absoluuttisen polun kuvatietokantaan syöttöargumenttina ja palauttaa tuple of 2 listan, joista toinen sisältää havaitut kasvot ja toinen sisältää vastaavan tunnisteen kyseiselle kasvolle. Jos esimerkiksi kasvoluettelon i: s indeksi edustaa tietokannan viidennen yksilöä, vastaavan tarran luettelon ensimmäisen sijan arvo on 5.
Muunna nyt tietojoukon kasvot (joka luodaan vaiheessa 6).yml -tiedostoksi alla annetun koodin avulla:
tuonti
tuo numpy np: nä tuoda cv2 PIL -tuontikuvasta # Kasvontunnistusta varten käytämme LBPH -kasvojentunnistimen tunnistinta = cv2.createLBPHFaceRecognizer (); path = "F:/Ohjelmatiedostot/projektit/face_rec/kasvotData" def getImagesWithID (polku): imagePaths = [os.path.join (polku, f) f: lle os.listdir (polku)] # print image_path #getImagesWithID (path) kasvot = IDs = imagePathille imagePaths: # Lue kuva ja muunna se harmaasävyisiksi kasvoiksiImg = Image.open (imagePath).convert ('L') faceNP = np.array (kasvotImg, 'uint8') # Hanki kuvan tunniste ID = int (os.path.split (imagePath) [-1].split (".") [1]) # Tunnista kuvassa olevat kasvot. Liitä (faceNP) ID.append (ID) cv2.imshow ("Kasvojen lisääminen transsiin", faceNP) cv2.waitKey (10) palauta np.array (ID), kasvotunnukset, kasvot = getImagesWithID (polku) tunnistin.juna (kasvot, tunnukset) tunnistin.save ("F:/Ohjelmatiedostot/projektit/face_rec/faceREC/trainingdata.yml") cv2.destroyAllWindows ()
käyttämällä tätä koodia kaikki kasvotietojoukot muunnetaan yhdeksi.yml -tiedostoksi…..polun sijainti on ("F:/Ohjelmatiedostot/projektit/face_rec/faceREC/trainingdata.yml")
Vaihe 8: Tee koodi kasvojen ja tuloksen tunnistamiseksi
Guyzz, tämä on viimeinen vaihe, jossa voimme luoda koodin, joka tunnistaa kasvot verkkokamerasi avulla. TÄMÄ VAIHE ON KAKSI TOIMINTAA, JOTKA SUORITETAAN…. 1. videon kaappaaminen kamerasta 2. vertaa sitä.yml -tiedostoosi
tuo numpy nimellä npimport cv2 face_cascade = cv2. CascadeClassifier ('F:/Program Files/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml') cap = cv2. VideoCapture (0) rec = cv2.createLBPHFaceRec; rec.load ("F:/Ohjelmatiedostot/projektit/face_rec/faceREC/trainingdata.yml") id = 0 font = cv2.cv. InitFont (cv2.cv. CV_FONT_HERSHEY_COMPLEX_SMALL, 5, 1, 0, 4) ja 1: ret, img = cap.read () grey = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) kasvot = face_cascade.detectMultiScale (harmaa, 1,5, 5) (x, y, w, h) kasvoissa: cv2.rectangle (img, (x, y), (x+w, y+h), (255, 0, 0), 2) id, conf = rec.predict (harmaa [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', jos id == 6: id = "akshay" cv2.cv. PutText (cv2.cv.fromarray (img), str (id), (x, y+h), fontti, 255)) cv2.imshow ('img', img) if cv2.waitKey (1) == ord ('q'): break cap.release ()
cv2.destroyAllWindows ()
ja lopulta tulos tulee silmiesi eteen ……. Voit myös ladata zip -tiedoston linkin alapuolelta: Lataa koodit napsauttamalla tätä. kuten tämä opettavainen….. plzzz tilaa minut ja äänestä minua….. kiitos ystävät:)
Suositeltava:
Tähtien tunnistus tietokonevision avulla (OpenCV): 11 vaihetta (kuvien kanssa)
Tähtien tunnistaminen Computer Vision (OpenCV) -toiminnon avulla: Tässä ohjeessa kerrotaan, miten voit luoda tietokoneen visio -ohjelman, joka tunnistaa automaattisesti tähtikuviot kuvassa. Menetelmä luo OpenCV (Open-Source Computer Vision) -kirjaston avulla joukon koulutettuja HAAR-kaskadeja, jotka voidaan
Kasvojen tunnistus ja tunnistus - Arduino -kasvotunnus OpenCV Pythonin ja Arduinon avulla .: 6 vaihetta
Kasvojen tunnistus ja tunnistus | Arduino -kasvotunnus OpenCV Pythonin ja Arduinon avulla .: Kasvontunnistus AKA -kasvotunnus on yksi tärkeimmistä ominaisuuksista matkapuhelimissa nykyään. Joten minulla oli kysymys " voinko saada kasvotunnuksen Arduino -projektilleni " ja vastaus on kyllä … Matkani alkoi seuraavasti: Vaihe 1: Pääsy
Etäisyyden tunnistus Micro: bitillä ja kaikuluotaimella (HC-SR04-moduuli): 3 vaihetta (kuvien kanssa)
Etäisyyden tunnistus Micro: bitillä ja kaikuluotaimella (HC-SR04-moduuli): Tällä viikolla olen viettänyt jonkin aikaa leikkiessäni upealla BBC micro: bitillä ja äänianturilla. Olen kokeillut muutamia eri moduuleja (yhteensä yli 50) ja ajattelin, että se olisi hyvä, joten jaa joitakin tuloksistani.Paras moduuli, jonka olen löytänyt, on Spar
Visuaalisten kohteiden tunnistus kameralla (TfCD): 15 vaihetta (kuvien kanssa)
Visuaalisten kohteiden tunnistus kameralla (TfCD): Kognitiiviset palvelut, jotka voivat tunnistaa tunteet, ihmisten kasvot tai yksinkertaiset esineet, ovat vielä kehitysvaiheessa, mutta koneoppimisen myötä tämä tekniikka kehittyy yhä enemmän. Voimme odottaa näkevämme enemmän tätä taikuutta
Kuvien tallentaminen tehtävää varten: 4 vaihetta (kuvien kanssa)
Kuvien tallentaminen tehtävää varten: 1. Avaa uusi Google -asiakirja ja suojaa kuvat tällä sivulla. Käytä ctrl (ohjaus) ja " c " kopioitava näppäin 3. Käytä ctrl (control) ja " v " liitettävä avain