Obsah:

Základné projekty OpenCV: 5 krokov
Základné projekty OpenCV: 5 krokov

Video: Základné projekty OpenCV: 5 krokov

Video: Základné projekty OpenCV: 5 krokov
Video: Как выучить Python БЫСТРО используя ChatGPT? 2024, November
Anonim
Základné projekty OpenCV
Základné projekty OpenCV

V tomto projekte skúmame niektoré základné funkcie OpenCV prostredníctvom 4 jednoduchých projektov zahŕňajúcich živý stream videa. Ide o rozpoznanie tváre, odstránenie pozadia, špeciálne vizuálne vykreslenie hrán a použitie efektu rozmazania na živý video stream. Mojím hlavným cieľom pri skúšaní týchto projektov bolo jednoducho zvlhčiť nohy rozhraním OpenCV, pretože sa plánujem ponoriť hlbšie do oblasti počítačového videnia.

Zásoby

  • Počítač so systémom Python
  • Otvorená knižnica CV, knižnica Numpy, knižnica tkinter, knižnica sys
  • Kamera na pripojenie k počítaču (ak počítač ešte jednu neobsahuje)
  • Súbor python programu (zahrnutý v tomto návode)
  • haarcascade xml súbor (súčasťou tohto návodu)

Krok 1: Funkcia FaceDetect

Funkcia FaceDetect
Funkcia FaceDetect
Funkcia FaceDetect
Funkcia FaceDetect

Táto funkcia zobrazuje video z vášho fotoaparátu so zelenými štvorčekmi na akýchkoľvek tvárach, ktoré zachytí. V kóde používame funkciu cv2. VideoCapture () na ukladanie videa, ktoré zachytávame, do objektu s názvom „zachytiť“. CAPTURE_INDEX je číslo nastavené vašim počítačom, ktoré zodpovedá indexu vášho fotoaparátu v zozname video vstupov počítača. Ak k počítaču nemáte pripojenú externú kameru, mala by fungovať 0 alebo 1.

Objekt face_cascade sa inicializuje pomocou funkcie cascadeClassifier a súboru „haarcascade_frontalface_default.xml“, ktorý sa nachádza v github OpenCV. Tento objekt používame na ukladanie tvárí zistených v zozname „tváre“ako vstupnej štvorsmerovej n-tice, ktorá drží tváre súradnice x, súradnice y, šírka a výška. Potom nakreslíme obdĺžnik, ktorý tvár dokonale obklopí, pomocou funkcie cv2.rectangle

Z tohto videa OpenCV zachytáva mnoho obrázkov v našej slučke while pomocou funkcie capt.read () a ukladania obrázka do rámca, ktorý sme pomenovali „img“. Každý obrázok je potom interpretovaný a upravený podľa nášho želania. V prípade faceDetect urobíme obraz sivým pomocou funkcie cvtColor, ktorá prevádza akýkoľvek obrázok uvedený v prvom parametri na konkrétny typ farby obrázka špecifikovaného v druhom parametri. Zoznam prijateľných hodnôt pre druhý parameter nájdete na internete. Potom obrázok zobrazíme v okne s názvom „Detection the face“pomocou funkcie imshow (), ktorá pre zobrazenie názvu okna a rámca obrázka potrebuje reťazec.

Nakoniec počkáme, kým používateľ zadá kláves q pomocou funkcie cv2.waitKey (). Maska 0xFF sa používa ako konvencia pre 64 -bitové počítače. Potom, čo používateľ ukončí streamovanie videa, funkcia faceDetect uvoľní zachytený objekt a potom zničí všetky ostatné okná otvorené pod rozhraním OpenCV. Všetky ostatné funkcie majú podobnú konštrukčnú štruktúru.

Krok 2: Funkcia Odstrániť pozadie

Funkcia BackgroundRemove
Funkcia BackgroundRemove
Funkcia BackgroundRemove
Funkcia BackgroundRemove

Táto funkcia sa pokúša odstrániť časť pozadia nášho videa a ponechať iba obrázok v popredí. Na niektorých kamerách to nemusí fungovať, pretože používajú funkciu nastavenia osvetlenia, ktorá sa aktivuje, keď do objektu vstúpia rôzne objekty/ ohniská. Ak funkcia odstránenia pozadia nefunguje, nebojte sa- môže to byť iba váš fotoaparát!

Ak chcete použiť túto funkciu, ustúpte od rámu fotoaparátu a stlačením klávesu „d“nasnímajte obrázok na pozadí. Je dôležité, aby na pozadí neboli žiadne pohybujúce sa objekty, ktoré chcete zachytiť. Potom sa môžeme vrátiť do rámu fotoaparátu. Ak funkcia fungovala, používateľ by sa mal vidieť iba vo video streame funkcie. Akýkoľvek šum/čierne škvrny na obrázku v popredí môžu byť dôsledkom úpravy osvetlenia fotoaparátu. Ak chcete zachytiť ďalšie pozadie, znova inicializujte kláves „r“a potom znova stlačte „d“.

K niektorým kľúčovým prvkom tejto funkcie patrí použitie logického znaku „flag“, ktorý sa vyvolá v okamihu, keď používateľ stlačí tlačidlo d. Toto zachytí pozadie a umožní nám to odstrániť z videa, ktoré funkcia streamuje. Našim cieľom je uložiť obrázok na pozadí v ref_img, aby sme ho odlíšili od obrazu v popredí, ktorý zachytáva akýkoľvek pohybujúci sa objekt. Funkciu cv2.subtract () použijeme na odpočítanie obrazu popredia od obrazu na pozadí a naopak, potom ihneď po sebe zrušíme akékoľvek nepatrné rozdiely v týchto dvoch obrázkoch. Pozadie je začiernené.

Fg maska sa vytvorí pomocou rozdielu medzi týmito dvoma obrázkami a potom sa aplikuje na funkcie video streamu pomocou funkcie OpenCV cv2.bitwise_and ().

Krok 3: Funkcia VideoEdges

Funkcia VideoEdges
Funkcia VideoEdges
Funkcia VideoEdges
Funkcia VideoEdges

Táto funkcia vracia náš živý video stream, ale detegovateľné okraje sú vykreslené bielo, zatiaľ čo všetko ostatné je začiernené. Čo odlišuje túto funkciu od ostatných funkcií, je konverzia nášho pôvodného videa z formátu RBG na HSV, čo znamená odtieň, sýtosť a variácie- odlišný spôsob spracovania svetla a farieb z videa. Vďaka tejto metóde môžeme jednoduchšie rozlíšiť obrysy vo videu pomocou filtra (red_low to red_high).

Canny Edge Detection sa používa na detekciu okrajov na obrázku. Prijíma ako vstup obrázok v odtieňoch sivej a používa viacstupňový algoritmus.

Krok 4: Funkcia VideoBlur

Funkcia VideoBlur
Funkcia VideoBlur
Funkcia VideoBlur
Funkcia VideoBlur

Táto funkcia sa používa na pridanie efektu rozmazania do nášho video streamu. Táto funkcia jednoducho volá funkciu GaussianBlur cv2 v našom rámci. Ďalšie informácie o funkcii gaussianBlur nájdete tu:

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

Krok 5: Vylepšenia

Najcitlivejšou funkciou v tomto projekte je funkcia odstraňovania pozadia, pretože vyžaduje použitie kamery, ktorá nemá funkciu nastavenia osvetlenia. V knižnici OpenCV môže byť lepšia sada funkcií, ktoré môžu zodpovedať za túto úpravu osvetlenia a hladko odstrániť pozadie (podobne ako zelená obrazovka).

Mohli by sme využiť aj ďalšie funkcie detekcie tváre, ktoré môžu vytvárať objekty s inými funkciami, ako len vracať súradnice (x, y). Možno by nebolo ťažké implementovať program rozpoznávania tvárí so schopnosťou zapamätať si tváre.

Funkciu rozostrenia je možné viac prispôsobiť podľa intuitívneho ovládania používateľom. Užívateľ môže napríklad chcieť upraviť intenzitu efektu rozmazania alebo vybrať konkrétnu oblasť v rámci, ktorú má rozmazať.

Odporúča: