Obsah:
- Zásoby
- Krok 1: Funkce FaceDetect
- Krok 2: Funkce BackgroundRemove
- Krok 3: Funkce VideoEdges
- Krok 4: Funkce VideoBlur
- Krok 5: Vylepšení
Video: Základní projekty OpenCV: 5 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:20
V tomto projektu prozkoumáme některé základní funkce OpenCV prostřednictvím 4 jednoduchých projektů zahrnujících živé video stream. Jedná se o rozpoznávání obličeje, odstranění pozadí, speciální vizuální vykreslování okrajů a použití efektu rozostření na živý stream videa. Mým hlavním cílem při zkoušení těchto projektů bylo jednoduše namočit si nohy pomocí rozhraní OpenCV, protože se plánuji ponořit hlouběji do oblasti počítačového vidění
Zásoby
- Počítač se systémem Python
- Otevřená knihovna CV, knihovna Numpy, knihovna tkinter, knihovna sys
- Kamera pro připojení k počítači (pokud počítač již žádnou neobsahuje)
- Soubor pythonu programu (součástí tohoto návodu)
- haarcascade xml soubor (součástí tohoto návodu)
Krok 1: Funkce FaceDetect
Tato funkce zobrazuje video vaší kamery se zelenými čtverečky na všech tvářích, které zachytí. V kódu používáme funkci cv2. VideoCapture () k ukládání videa, které pořizujeme, do objektu s názvem „zachytit“. CAPTURE_INDEX je číslo nastavené vaším počítačem, které odpovídá rejstříku vaší kamery v seznamu video vstupu počítače. Pokud k počítači nemáte připojenou externí kameru, měla by fungovat 0 nebo 1.
Objekt face_cascade je inicializován pomocí funkce cascadeClassifier a souboru „haarcascade_frontalface_default.xml“nalezeného v githubu OpenCV. Tento objekt používáme k ukládání obličejů detekovaných v seznamu „tváře“jako vstupní čtyřcestná řazená kolekce, která drží tváře souřadnice x, souřadnice y, šířka a výška. Potom nakreslíme obdélník, který dokonale obklopuje obličej pomocí funkce cv2.rectangle
Z tohoto videa OpenCV zachycuje mnoho obrázků ve smyčce while pomocí funkce capture.read () a ukládání obrázku do rámce, který jsme pojmenovali „img“. Každý obrázek je pak interpretován a upraven, jak si přejeme. Pro faceDetect vytvoříme obrázek šedý pomocí funkce cvtColor, která převede jakýkoli obrázek uvedený v prvním parametru na konkrétní typ barvy obrázku specifikovaný ve druhém parametru. Seznam přijatelných hodnot pro druhý parametr najdete online. Poté obrázek zobrazíme v okně s názvem „Detection the face“pomocí funkce imshow (), která přebírá řetězec pro zobrazení názvu okna a rámečku obrázku.
Nakonec počkáme, až uživatel zadá klávesu q pomocí funkce cv2.waitKey (). Maska 0xFF se používá jako konvence pro 64bitové počítače. Poté, co uživatel ukončí streamování videa, funkce faceDetect uvolní objekt pro zachycení a poté zničí všechna ostatní okna otevřená v rozhraní OpenCV. Všechny ostatní funkce mají podobnou strukturu návrhu.
Krok 2: Funkce BackgroundRemove
Tato funkce se pokusí odstranit část našeho videa na pozadí a ponechat pouze obrázek v popředí. U některých kamer to nemusí fungovat, protože využívají funkce úpravy osvětlení, která se aktivuje, když do objektu vstoupí různé objekty/ ohniska. Pokud vaše funkce BackgroundRemove nefunguje, nebojte se- může to být jen váš fotoaparát!
Chcete -li použít tuto funkci, ustupte od rámečku fotoaparátu a stisknutím tlačítka „d“pořiďte obrázek na pozadí. Je důležité, aby na pozadí nebyly žádné pohybující se objekty, které chcete zachytit. Poté můžeme ustoupit zpět do rámečku kamery. Pokud funkce fungovala, měl by se uživatel vidět pouze ve video streamu funkce. Jakýkoli šum/černé skvrny v popředí obrazu mohou být důsledkem úpravy osvětlení fotoaparátu. Chcete-li zachytit další pozadí, restartujte jej stisknutím klávesy „r“a poté znovu stiskněte „d“.
Některé klíčové funkce pro tuto funkci je použití logické hodnoty „flag“, která se vyvolá v okamžiku, kdy uživatel stiskne tlačítko d. Tím se zachytí pozadí a umožní nám to odstranit z videa, které funkce streamuje. Naším cílem je uložit obrázek na pozadí v ref_img, abychom jej mohli odlišit od obrázku v popředí, který zachycuje jakýkoli pohybující se objekt. Pomocí funkce cv2.subtract () odečteme obraz předního povrchu od obrazu na pozadí a naopak a poté okamžitě zrušíme jakékoli nepatrné rozdíly v těchto dvou obrázcích. Pozadí je černé.
Fg maska je vytvořena pomocí rozdílu mezi těmito dvěma obrázky a poté aplikována na video stream funkcí pomocí funkce OpenCV cv2.bitwise_and ().
Krok 3: Funkce VideoEdges
Tato funkce vrací náš živý video stream, ale detekovatelné hrany jsou vykresleny bíle, zatímco vše ostatní je zatemněno. To, co tuto funkci odlišuje od ostatních funkcí, je převod našeho původního videa z formátu RBG na HSV, což znamená odstín, sytost a variace- odlišný způsob zpracování světla a barev z videa. Pomocí této metody můžeme snáze odlišit obrysy ve videu pomocí filtru (red_low to red_high).
Detekce hran Canny se používá k detekci hran na obrázku. Přijímá obrázek šedé stupnice jako vstup a používá vícestupňový algoritmus.
Krok 4: Funkce VideoBlur
Tato funkce slouží k přidání efektu rozostření do našeho video streamu. Funkce jednoduše volá funkci GaussianBlur cv2 v našem rámci. Další informace o funkci gaussianBlur najdete zde:
opencv-python-tutroals.readthedocs.io/en/l…
Krok 5: Vylepšení
Nejcitlivější funkcí v tomto projektu je funkce odstranění pozadí, protože vyžaduje použití kamery, která nemá funkci nastavení osvětlení. V knihovně OpenCV může existovat lepší sada funkcí, které mohou toto nastavení osvětlení vysvětlit a plynule odstranit pozadí (podobně jako zelená obrazovka).
Mohli bychom také využít další funkce detekce obličeje, které mohou vytvářet objekty s více funkcemi než jen vracet (x, y) souřadnice. Možná by nebylo obtížné implementovat program rozpoznávání obličejů se schopností zapamatovat si tváře.
Funkce rozostření může být více přizpůsobena intuitivním ovládáním ze strany uživatele. Uživatel může například chtít upravit intenzitu efektu rozostření nebo vybrat konkrétní oblast v rámci snímku, kterou má rozmazat.
Doporučuje:
Ruční základní počítač: 6 kroků (s obrázky)
Ruční počítač BASIC: Tento návod popisuje můj proces stavby malého kapesního počítače se systémem BASIC. Počítač je postaven na čipu ATmega 1284P AVR, který také inspiroval hloupý název počítače (HAL 1284). Tato konstrukce je HEAVILY inspirována
Základní program C ++: 11 kroků
Základní program C ++: v tomto programu se naučíte základy c ++ kódováním jednoduchého programu c ++, který vytvoří více uživatelů a zobrazí tyto uživatele, doufám, že se vám bude líbit
Jak postavit herní nebo základní počítač (všechny součásti): 13 kroků
Jak postavit herní nebo základní počítač (všechny součásti): Chcete tedy vědět, jak postavit počítač? V těchto pokynech vás naučím, jak vytvořit základní stolní počítač. Zde jsou požadované součásti: Základní deska PC Case (Ujistěte se, že je PGA, pokud AMD a LGA, pokud Intel) Chladič CPU CPU Fanoušci
NAIN 1.0 - základní humanoidní robot využívající Arduino: 6 kroků
NAIN 1.0 - základní humanoidní robot využívající Arduino: Nain 1.0 bude mít v zásadě 5 odpojitelných modulů - 1) Arm - které lze ovládat pomocí serv. 2) Kola - které lze ovládat stejnosměrnými motory. 3) Noha - Nain bude moci přepínat mezi kolečky nebo nohama pro pohyb. 4) Hlava a
Reproduktor základní desky PCB: 5 kroků (s obrázky)
Reproduktor základní desky s plošnými spoji: Nejčastěji vybíráme různé typy elektronických obvodů. Nula! Espero que gostem: DSe eu ganhar algum dos principais prêmios eu pretendo levar na Universidade e availableibilizar para os alunos e profesores využití de cutoç