Sisällysluettelo:
- Tarvikkeet
- Vaihe 1: FaceDetect -toiminto
- Vaihe 2: BackgroundRemove -toiminto
- Vaihe 3: VideoEdges -toiminto
- Vaihe 4: VideoBlur -toiminto
- Vaihe 5: Parannuksia
Video: OpenCV -perusprojektit: 5 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:00
Tässä projektissa tutkimme joitain OpenCV: n perustoimintoja neljän yksinkertaisen projektin kautta, joihin kuuluu suora videovirta. Näitä ovat kasvojentunnistus, taustan poisto, reunojen erityinen visuaalinen renderointi ja epätarkkuuden lisääminen live -videovirtaan. Päätavoitteeni kokeilla näitä projekteja oli yksinkertaisesti kastaa jalkani OpenCV -käyttöliittymän avulla, kun aion syventyä tietokonenäkökenttään
Tarvikkeet
- Tietokone, jossa on Python
- Avaa CV -kirjasto, Numpy -kirjasto, tkinter -kirjasto, sys -kirjasto
- Kamera tietokoneeseen yhdistämistä varten (jos tietokoneessa ei ole jo sellaista)
- Ohjelman python -tiedosto (sisältyy tähän ohjeeseen)
- haarcascade xml -tiedosto (sisältyy tähän ohjeeseen)
Vaihe 1: FaceDetect -toiminto
Tämä toiminto näyttää kameran videon vihreillä neliöillä kaikissa sen havaitsemissa kasvoissa. Koodissa käytämme cv2. VideoCapture () -toimintoa tallentamamme videon sieppaamiseen nimettyyn kohteeseen. CAPTURE_INDEX on tietokoneesi asettama numero, joka vastaa kameran hakemistoa tietokoneen videotuloluettelossa. Jos tietokoneeseen ei ole liitetty ulkoista kameraa, 0 tai 1 pitäisi toimia.
Face_cascade -objekti alustetaan käyttämällä cascadeClassifier -toimintoa ja "haarcascade_frontalface_default.xml" -tiedostoa, joka löytyy OpenCV -githubista. Käytämme tätä objektia tallentaaksesi "kasvot" -luettelossa havaitut kasvot syöttötasona nelisuuntaisena tupleina, joka pitää kasvot x koordinaatti, y-koordinaatti, leveys ja korkeus. Piirrämme sitten suorakulmion, joka ympäröi kasvot täydellisesti cv2.rectangle -funktiolla
Tästä videosta OpenCV kaappaa monia kuvia samalla silmukassamme käyttämällä capture.read () - tiedostoa ja tallentaa kuvan kehykseen, jonka nimimme "img". Jokainen kuva tulkitaan ja muokataan sitten haluamallamme tavalla. FaceDetect -sovelluksessa teemme kuvan harmaaksi käyttämällä cvtColor -toimintoa, joka muuntaa mitä tahansa ensimmäisessä parametrissa annettua kuvaa tietyntyyppiseksi toisessa parametrissa määritetyksi kuvan värityypiksi. Luettelo toisen parametrin hyväksyttävistä arvoista löytyy verkosta. Näytämme sitten kuvan ikkunassa nimeltä "Tunnistaa kasvot" käyttämällä imshow () -toimintoa, joka ottaa merkkijonon ikkunan nimen ja kuvakehyksen näyttämistä varten.
Lopuksi odotamme, että käyttäjä syöttää q -näppäimen cv2.waitKey () -toiminnolla. 0xFF -maskia käytetään yleisesti 64 -bittisissä tietokoneissa. Kun käyttäjä on lopettanut videovirran, faceDetect -toiminto vapauttaa sieppausobjektin ja tuhoaa kaikki muut OpenCV -käyttöliittymän alla avatut ikkunat. Kaikki muut toiminnot noudattavat samanlaista rakennerakennetta.
Vaihe 2: BackgroundRemove -toiminto
Tämä toiminto yrittää poistaa videomme taustaosan ja jättää vain etualan kuvan. Se ei ehkä toimi joissakin kameroissa, koska ne käyttävät valaistuksen säätötoimintoa, joka aktivoituu, kun kehykseen tulee erilaisia esineitä/ fokuksia. Jos backgroundRemove-toiminto ei toimi, älä huolestu- se voi olla vain kamerasi!
Jos haluat käyttää tätä toimintoa, astu pois kameran kehyksestä ja ota taustakuva painamalla d -näppäintä. On tärkeää, että taustalla ei ole liikkuvia esineitä, jotka haluat kaapata. Sitten voimme astua takaisin kameran kehykseen. Jos toiminto toimi, käyttäjän pitäisi nähdä vain itsensä toiminnon videovirrassa. Kaikki etualan kuvan kohina/mustat läikät voivat johtua kameran valaistuksen säätämisestä. Jos haluat ottaa toisen taustan, paina "r" -näppäintä alustaaksesi uudelleen ja paina sitten "d" uudelleen.
Jotkut tämän toiminnon tärkeimpiä poimintoja ovat "lipun" booleanin käyttö, joka nostetaan heti, kun käyttäjä painaa d-painiketta. Tämä kaappaa taustan ja antaa meille mahdollisuuden poistaa se toiminnon suoratoistamasta videosta. Pyrimme tallentamaan taustakuvan ref_img -tiedostoon, jotta voimme erottaa sen etualan kuvasta, joka tallentaa kaikki liikkuvat kohteet. Käytämme cv2.subtract () -funktiota etualan kuvan vähentämiseksi taustakuvasta ja päinvastoin, ja poistamme sitten pienet erot kahdessa kuvassa heti sen jälkeen. Tausta on tummennettu.
Fgmask tehdään käyttämällä näiden kahden kuvan eroa ja sitä käytetään sitten toimintojen videovirtaan käyttämällä OpenCV cv2.bitwise_and () -funktiota.
Vaihe 3: VideoEdges -toiminto
Tämä toiminto palauttaa live -videovirran, mutta havaittavat reunat muutetaan valkoisiksi, kun kaikki muu on pimennetty. Mikä erottaa tämän toiminnon muista toiminnoista, on alkuperäisen videomme muuntaminen RBG-muodosta HSV-muotoon, joka tarkoittaa värisävyä, kylläisyyttä ja vaihtelua- erilaista valon ja värin käsittelymenetelmää videosta. Tällä menetelmällä voimme helpommin erottaa videon ääriviivat käyttämällä suodatinta (red_low to red_high).
Canny Edge Detectionia käytetään kuvan reunojen havaitsemiseen. Se hyväksyy syötteenä harmaasävyisen kuvan ja käyttää monivaiheista algoritmia.
Vaihe 4: VideoBlur -toiminto
Tätä toimintoa käytetään lisäämään hämärtävä vaikutus videovirtaamme. Funktio yksinkertainen kutsuu GaussianBlur cv2 -funktiota kehyksessämme. Lisätietoja gaussianBlur -toiminnosta löytyy täältä:
opencv-python-tutroals.readthedocs.io/en/l…
Vaihe 5: Parannuksia
Hankkeen herkin toiminto on taustan poistotoiminto, koska se edellyttää kameran käyttöä, jossa ei ole valaistuksen säätötoimintoa. OpenCV -kirjastossa voi olla parempia toimintoja, jotka voivat ottaa huomioon tämän valaistuksen säädön ja poistaa taustan sujuvasti (samanlainen kuin vihreä näyttö).
Voisimme myös käyttää muita kasvojentunnistustoimintoja, jotka voivat tuottaa kohteita, joilla on enemmän toimintoja kuin (x, y) -koordinaattien palauttaminen. Ehkä kasvojentunnistusohjelma, jolla on kyky muistaa kasvot, ei olisi liian vaikea toteuttaa.
Hämärtystoimintoa voidaan muokata enemmän käyttäjän intuitiivisen ohjauksen avulla. Käyttäjä voi esimerkiksi haluta säätää sumennustehon voimakkuutta tai valita sumennettavaksi tietyn alueen kehyksestä.
Suositeltava:
QR -koodinlukija OpenCV: n avulla Pythonissa: 7 vaihetta
QR-koodinlukija OpenCV: n avulla Pythonissa: Nykymaailmassa näemme, että QR-koodia ja viivakoodia käytetään lähes kaikkialla tuotteen pakkaamisesta verkkomaksuihin, ja nykyään näemme QR-koodit jopa ravintolassa nähdäksemme valikon. epäile, että se on nyt iso ajatus. Mutta oletko koskaan kärsinyt
Reaaliaikainen Rubikin kuution silmät ratkaistu Ratkaisu Raspberry Pi: n ja OpenCV: n avulla: 4 vaihetta
Reaaliaikainen Rubikin kuution sokeat ratkaisija Raspberry Pi: n ja OpenCV: n avulla: Tämä on Rubikin kuutiotyökalun toinen versio, joka on suunniteltu ratkaisemaan silmät. Ensimmäinen versio on JavaScriptin kehittämä, näet projektin RubiksCubeBlindfolded1Toisin kuin edellinen, tämä versio käyttää OpenCV -kirjastoa värien ja e
Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Aplicativo Android: 6 vaihetta
Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Applicativo Android: DESCRI Ç Ã OO intuito do projeto é dar autonomia para deficientes visuais se locomoverem em ambientes como casas ou ostoskeskukset ja lentoasemat.A locomo ç ã o em ambientes j á mapeados pode ou n ã o s
Colec.te - Lixeira Inteligente Qualcomm Dragonboard 410c + OpenCV: 7 vaihetta
Colec.te - Lixeira Inteligente Qualcomm Dragonboard 410c + OpenCV: A nossa lixeira inteligente koostuu erillisistä ç ã o autom á tica do lixo. Atravin verkkokamera, tunniste tai tyyppi de lixo e o deposita no compartimento sopivuus para posteriormente ser reciclado
Kuvankäsittely Raspberry Pi: llä: OpenCV: n asentaminen ja kuvan värin erotus: 4 vaihetta
Kuvankäsittely Raspberry Pi: llä: OpenCV: n ja kuvan värin erottamisen asentaminen: Tämä viesti on ensimmäinen useista kuvankäsittelyoppaista, joita on tarkoitus seurata. Katsomme tarkemmin kuvan muodostavia pikseleitä, opimme asentamaan OpenCV: n Raspberry Pi -laitteeseen ja kirjoitamme myös testikomentosarjoja kuvan ottamiseksi ja myös