Sisällysluettelo:

OpenCV -perusprojektit: 5 vaihetta
OpenCV -perusprojektit: 5 vaihetta

Video: OpenCV -perusprojektit: 5 vaihetta

Video: OpenCV -perusprojektit: 5 vaihetta
Video: Основные ошибки при возведении перегородок из газобетона #5 2024, Marraskuu
Anonim
OpenCV -perusprojektit
OpenCV -perusprojektit

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

FaceDetect -toiminto
FaceDetect -toiminto
FaceDetect -toiminto
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

BackgroundRemove -toiminto
BackgroundRemove -toiminto
BackgroundRemove -toiminto
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

VideoEdges -toiminto
VideoEdges -toiminto
VideoEdges -toiminto
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

VideoBlur -toiminto
VideoBlur -toiminto
VideoBlur -toiminto
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: