Kazalo:

Osnovni projekti OpenCV: 5 korakov
Osnovni projekti OpenCV: 5 korakov

Video: Osnovni projekti OpenCV: 5 korakov

Video: Osnovni projekti OpenCV: 5 korakov
Video: Leap Motion SDK 2024, Julij
Anonim
Osnovni projekti OpenCV
Osnovni projekti OpenCV

V tem projektu raziskujemo nekatere osnovne funkcije OpenCV skozi 4 preproste projekte, ki vključujejo video tok v živo. To so prepoznavanje obraza, odstranjevanje ozadja, posebno vizualno upodabljanje robov in uporaba učinka zameglitve video toka v živo. Moj glavni namen preizkušanja teh projektov je bil preprosto zmočiti noge z vmesnikom OpenCV, saj se nameravam poglobiti na področju računalniškega vida

Zaloge

  • Računalnik z Pythonom
  • Odprta knjižnica življenjepisov, knjižnica Numpy, knjižnica tkinter, knjižnica sys
  • Kamera za povezavo z računalnikom (če računalnika še nima)
  • Programska datoteka python (vključena v to navodilo)
  • haarcascade xml datoteka (vključena v ta navodila)

Korak: Funkcija FaceDetect

Funkcija FaceDetect
Funkcija FaceDetect
Funkcija FaceDetect
Funkcija FaceDetect

Ta funkcija prikazuje video posnetek vaše kamere z zelenimi kvadrati na vseh obrazih, ki jih pobere. V kodi uporabljamo funkcijo cv2. VideoCapture () za shranjevanje videoposnetka, ki ga zajemamo, v objekt z imenom "zajem". CAPTURE_INDEX je številka, ki jo nastavi vaš računalnik in ustreza indeksu vaše kamere na seznamu video vhodov v računalniku. Če zunanja kamera ni povezana z računalnikom, bi morala delovati 0 ali 1.

Objekt face_cascade se inicializira s funkcijo cascadeClassifier in datoteko "haarcascade_frontalface_default.xml", ki jo najdete v githubu OpenCV. Ta predmet uporabljamo za shranjevanje obrazov, zaznanih na "obrazih" seznama, kot vnos v štirih smereh, ki vsebuje obraze x koordinato, y koordinato, širino in višino. Nato s funkcijo cv2.rectangle narišemo pravokotnik, ki popolnoma obdaja obraz

Iz tega videoposnetka OpenCV zajame veliko slik v naši zanki while z uporabo capture.read () in shrani sliko v okvir, ki smo ga poimenovali "img". Vsaka slika se nato razlaga in spreminja, kot želimo. Za faceDetect naredimo sliko sivo s funkcijo cvtColor, ki pretvori katero koli sliko, podano v prvem parametru, v določeno vrsto barve slike, podano v drugem parametru. Seznam sprejemljivih vrednosti za drugi parameter najdete na spletu. Sliko nato prikažemo v oknu z imenom "Zaznavanje obraza" s funkcijo imshow (), ki vzame niz za ime okna in okvir slike.

Končno počakamo, da uporabnik vnese ključ q s funkcijo cv2.waitKey (). Maska 0xFF se uporablja kot konvencija za 64 -bitne računalnike. Ko uporabnik konča video tok, funkcija faceDetect sprosti objekt zajema in nato uniči vsa druga okna, odprta pod vmesnikom OpenCV. Vse druge funkcije sledijo podobni zasnovi.

Korak: Funkcija BackgroundRemove

Ozadje Odstrani funkcijo
Ozadje Odstrani funkcijo
Ozadje Odstrani funkcijo
Ozadje Odstrani funkcijo

Ta funkcija poskuša odstraniti del ozadja našega videoposnetka in pustiti samo sliko v ospredju. Pri nekaterih kamerah morda ne bo delovalo, saj uporabljajo funkcijo nastavitve osvetlitve, ki se aktivira, ko v okvir vstopijo različni predmeti/ žarišča. Če funkcija BackgroundRemove ne deluje, se ne sekirajte- to je lahko samo vaš fotoaparat!

Če želite uporabiti to funkcijo, se odmaknite od okvirja kamere in pritisnite tipko "d", da posnamete sliko ozadja. Pomembno je, da v ozadju ni premikajočih se predmetov, ki jih želite posneti. Nato lahko stopimo nazaj v okvir kamere. Če je funkcija delovala, se mora uporabnik videti le v videotoku funkcije. Morebitni šum/črni madeži na sliki v ospredju so lahko posledica nastavitve osvetlitve fotoaparata. Če želite zajeti drugo ozadje, pritisnite tipko "r" za ponovno inicializacijo, nato znova pritisnite "d".

Nekateri ključni odmiki za to funkcijo so uporaba "zastavice" logične vrednosti, ki se dvigne v trenutku, ko uporabnik pritisne gumb d. To zajema ozadje in nam omogoča, da ga odstranimo iz videoposnetka, ki ga funkcija pretočno predvaja. Sliko ozadja želimo shraniti v ref_img, tako da jo lahko ločimo od slike v ospredju, ki zajema kateri koli premikajoči se predmet. Uporabljamo funkcijo cv2.subtract (), da od slike ozadja odštejemo sliko sprednjega dela zemlje in obratno, nato pa takoj zatem prekličemo vse manjše razlike v obeh slikah. Ozadje je zatemnjeno.

Maska fgmask je narejena z uporabo razlike med tema dvema slikama in nato uporabljena za video tok funkcij s funkcijo OpenCV cv2.bitwise_and ().

3. korak: Funkcija VideoEdges

Funkcija VideoEdges
Funkcija VideoEdges
Funkcija VideoEdges
Funkcija VideoEdges

Ta funkcija vrne naš video tok v živo, vendar zaznavni robovi postanejo beli, medtem ko je vse ostalo zatemnjeno. Ta funkcija se razlikuje od drugih funkcij, saj je pretvorba našega izvirnega videa iz formata RBG v HSV, kar pomeni odtenek, nasičenost in variacijo- drugačen način obdelave svetlobe in barv iz videa. S to metodo lahko v videoposnetku lažje ločimo obrise z uporabo filtra (red_low do red_high).

Canny Edge Detection se uporablja za zaznavanje robov na sliki. Za vhod sprejema sliko sive lestvice in uporablja večstopenjski algoritem.

4. korak: Funkcija VideoBlur

Funkcija VideoBlur
Funkcija VideoBlur
Funkcija VideoBlur
Funkcija VideoBlur

Ta funkcija se uporablja za dodajanje učinka zamegljenosti našemu video toku. Preprosta funkcija kliče funkcijo GaussianBlur cv2 na našem okvirju. Dodatne informacije o funkciji gaussianBlur najdete tukaj:

opencv-python-tutroals.readthedocs.io/en/l…

5. korak: Izboljšave

Najbolj občutljiva funkcija v tem projektu je funkcija odstranjevanja ozadja, saj zahteva uporabo kamere, ki nima funkcije nastavitve osvetlitve. Morda je v knjižnici OpenCV boljši nabor funkcij, ki lahko upoštevajo to prilagoditev osvetlitve in gladko odstranijo ozadje (podobno kot zeleni zaslon).

Uporabili bi lahko tudi druge funkcije zaznavanja obrazov, ki bi lahko ustvarile objekte z večjo funkcionalnostjo, ki ne samo vračajo koordinate (x, y). Morda programa za prepoznavanje obrazov s sposobnostjo zapomnitve obrazov ne bi bilo preveč težko izvesti.

Funkcijo zameglitve lahko uporabnik z intuitivnim nadzorom dodatno prilagodi. Na primer, uporabnik bo morda želel prilagoditi intenzivnost učinka zamegljenosti ali izbrati določeno območje v okvirju za zameglitev.

Priporočena: