Obsah:
- Zásoby
- Krok 1: Funkcia FaceDetect
- Krok 2: Funkcia Odstrániť pozadie
- Krok 3: Funkcia VideoEdges
- Krok 4: Funkcia VideoBlur
- Krok 5: Vylepšenia
Video: Základné projekty OpenCV: 5 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:57
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
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
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
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
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:
AKO ODSTRÁNIŤ ZÁKLADNÉ INFORMÁCIE NA OBRÁZKU POUŽÍVANÍM SLOVA SLUŽBA JEDNODUCHÉ: 12 krokov
AKO ODSTRÁNIŤ ZÁKLADNÉ INFORMÁCIE NA OBRÁZKU POUŽÍVANÍM SLOVA SLOVO SNADNÉ: ahoj chlapci !! som späť!!!!! všetci mi chýbate :) mám nový návod, ktorý je veľmi jednoduchý !!! Vedeli ste, že môžete upravovať obrázky v programe Microsoft Word? áno, môžete odstrániť pozadie alebo vylepšiť obrázok, ak ste neskúsili iné aplikácie, môžete použiť
Text na reč Kliknite na ARM základne poháňanú UChip a ďalšie ARM základne poháňané SBC: 3 kroky
Prevod textu na reč Kliknite na ARMbasic Powered UChip a ďalšie ARMbasic poháňané SBC: Úvod: Dobrý deň. Volám sa Tod. Som profesionál v oblasti letectva a obrany, ktorý je tiež trochu geek. Inšpirácia: Pochádza z éry dial-up BBS, 8-bitových mikrokontrolérov, osobných počítačov Kaypro/Commodore/Tandy/TI-994A, keď R
Indikátor hladiny vody - Základné obvody tranzistora: 5 krokov
Indikátor hladiny vody | Tranzistorové základné obvody: Značka vodnej hladiny je zariadenie s elektronickým obvodom, ktoré prenáša údaje späť na riadiacu dosku a ukazuje, či má vodná cesta vysokú alebo nízku hladinu vody. Niektoré značky hladiny vody používajú na detekciu hladiny vody kombináciu testovacích senzorov alebo zmien. Re
Robot na výber a umiestnenie základne Arduino: 8 krokov
Robot na vyberanie a umiestňovanie základov Arduino: Vyrobil som super lacné (menej ako 1 000 dolárov) priemyselné robotické rameno, ktoré študentom umožňuje hackovať robotiku väčšieho rozsahu a umožniť malým miestnym výrobcom používať vo svojich procesoch roboty bez toho, aby narušili banku. Je ľahké postaviť a urobiť
Základné stopky používajúce dosku VHDL a Basys3: 9 krokov
Základné stopky pomocou dosky VHDL a Basys3: Vitajte v návode, ako zostaviť stopky pomocou základnej dosky VHDL a Basys 3. Sme radi, že sa s vami môžeme podeliť o náš projekt! Toto bol konečný projekt pre kurz CPE 133 (digitálny dizajn) na Cal Poly, SLO na jeseň 2016. Projekt, ktorý sme vytvorili