Lidé dokážou rozlišit asi 10 milionů barev. Chcete-li je vnímat, potřebujete něco známého jako barevná paleta. Paleta barev obsahuje nástroje pro zobrazení celé škály barev viditelných lidským okem. V reálném světě je používáte k vytváření estetických návrhů na papíře, zatímco digitálně je používáte k přidávání barev do prvků obrazovky.
Nakonec váš počítač zakóduje všechny různé odstíny, které vidíte na obrazovce, pomocí určitého formátu. S Pythonem můžete vyvinout barevnou paletu kódovanou RGB v několika řádcích kódu díky modulu OpenCV a NumPy.
Modul OpenCV a NumPy
Pomocí OpenCV můžete analyzovat obrázky a videa. Je zdarma, s otevřeným zdrojovým kódem, snadno se používá a je nabitý užitečnými knihovnami. Tyto poskytují techniky pro klasifikaci, lokalizaci a sledování objektů ve dvou i třech rozměrech. Chcete-li nainstalovat OpenCV do svého prostředí, otevřete terminál a spusťte:
pip install opencv-python
Modul NumPy je další populární knihovna, kterou uvidíte v mnoha programech Python. NumPy – numerický Python – je modul, který můžete použít pro analýzu dat a vědecké výpočty. Poskytuje také objekty n-rozměrného pole matematické operace které pomáhají při manipulaci s těmito poli.
Chcete-li nainstalovat NumPy do svého prostředí, spusťte:
pip install numpy
Obecně budete OpenCV používat ke zpracování obrázků pomocí technik, jako je detekce hran. Poté můžete použít NumPy k provedení analýzy dat na zpracovávaném snímku. Pomocí této kombinace můžete vytvořit a dekódovat QR kód, klasifikovat obrázky, provádět optické rozpoznávání znaků a budovat video monitorovací systémy, které dokážou detekovat pohyb a sledovat jednotlivce v reálném čase.
Jak vytvořit paletu barev pomocí Pythonu
Chcete-li vytvořit paletu barev pomocí modulu OpenCV a NumPy v Pythonu, postupujte podle těchto kroků.
Zdroj palety barev pomocí Pythonu najdete v tomto GitHub úložiště.
Začněte importem modulů OpenCV a NumPy. Definujte funkci pojmenovanou emptyfunction() který obsahuje příkaz pass. Příkaz pass funguje jako zástupný symbol pro kód, který můžete napsat v budoucnu. To je užitečné zejména u funkcí, jako je createTrackbar, které využijete později. Vyžaduje platnou funkci zpětného volání a můžete zatím předat emptyFunction jako zástupný symbol.
import cv2
import nemotorný tak jako np
defemptyFunction():
složit
Vygenerujte trojrozměrné pole o velikosti 512 * 512 * 3 s datovým typem uint8 pomocí NumPy's nula() funkce. Každé pole se bude skládat z 512 sloupců a 512 řádků. uint8 představuje celé číslo bez znaménka, takže program vyplní pole nulami.
obrázek = np.zeros((512, 512, 3), np.uint8)
Nastavte název okna, které program zobrazí, a předejte jej NameWindow() funkce pro vytvoření okna:
název_okna = "Paleta barev OpenCV"
cv2.namedWindow (název okna)
Dále vygenerujte tři pruhy pro červenou, zelenou a modrou barevnou složku. Můžete to udělat pomocí OpenCV createTrackbar() funkce. Nejprve předejte štítek jako červený, modrý nebo zelený. Za druhé, musíte předat název okna, kam chcete tyto pruhy umístit, například název_okna.
Třetím parametrem je minimální limit lišty, v tomto případě 0. Čtvrtý parametr určuje maximální hodnotu, která je 255 pro 24bitovou hodnotu barvy. Pátým a posledním parametrem je funkce zpětného volání, pro kterou createTrackbar vyžaduje platnou funkci. Proto jste dříve vytvořili emptyFunction, aby fungovala jako zástupný symbol.
cv2.createTrackbar('Modrý', název okna, 0, 255, emptyFunction)
cv2.createTrackbar('Zelená', název okna, 0, 255, emptyFunction)
cv2.createTrackbar('Červené', název okna, 0, 255, emptyFunction)
Deklarujte nekonečnou smyčku while a předejte název okna spolu s obrázkem, který chcete zobrazit, do OpenCV imshow() funkce. Protože obrázek obsahuje trojrozměrné pole nul, program zpočátku zobrazuje černou obrazovku.
Zkontrolujte, zda uživatel stiskl klávesu Escape otestováním hodnoty z waitkey() proti 27 (kód ASCII pro klávesu Escape). Funkce waitkey() zobrazí okno po zadaný počet milisekund nebo dokud nestisknete klávesu. Předáním jedničky jako vstupu zobrazí okno na milisekundu, ale regeneruje se díky nekonečné smyčce while.
Chcete-li získat aktuální polohu pruhu stopy, předejte název pruhu stopy spolu s názvem okna getTrackbarPos(). Opakujte tento krok pro tři samostatné barevné složky, modrou, zelenou a červenou. Pomocí operátoru řezu přiřaďte tři hodnoty poli obrázků. Tím se nahradí předchozí sada hodnot, zpočátku všechny nuly, aktuálními hodnotami podle poloh lišty.
zatímco (Skutečný):
cv2.imshow (název okna, obrázek)-li cv2.waitKey(1) == 27:
přestávka
modrá = cv2.getTrackbarPos('Modrý', název okna)
zelená = cv2.getTrackbarPos('Zelená', název okna)
červená = cv2.getTrackbarPos('Červené', název okna)
obrázek[:] = [modrá, zelená, červená]
tisk (modrá, zelená, červená)
Jakmile uživatel stiskne klávesu Escape, použijte zničitVšechnyWindows() zavřít okna, která program otevřel:
cv2.destroyAllWindows()
Nakonec to všechno dejte dohromady a spusťte, abyste mohli ovládat a prohlížet svou paletu barev.
Výstup programu Python Color Palette
Při spuštění výše uvedeného programu se zobrazí okno, které obsahuje tři pruhy pro barvy Modrá, Zelená a Červená. Pruhy stopy se pohybují v rozsahu od 0 do 255. Když změníte hodnoty různých pruhů, měli byste v části níže vidět různé odstíny barev.
V tomto prvním příkladu můžete vidět nastavení modrého pruhu na 0, zeleného na 69 a červeného na 255. Výsledná výstupní barva je odstín oranžové/červené. Kromě toho okno terminálu zobrazuje hodnoty barev jako 0 69 255.
Podobně, když nastavíte modrý pruh na 130, zelený na 0 a červený na 75, získáte barvu Indigo.
Různé aplikace OpenCV
OpenCV nabízí cenné funkce pro úkoly, jako je zpracování obrazu, rozpoznávání objektů, rozpoznávání obličejů a sledování. Pomocí OpenCV můžete vytvářet aplikace počítačového vidění v reálném čase, které by byly přínosem v oblastech, jako je robotika, průmyslová automatizace, lékařské zobrazování a sledovací systémy.
Budoucnost počítačového vidění je slibná. Budete moci používat počítačové vidění k pomoci zrakově postiženým, zajistit lepší růst v zemědělství, zvýšit bezpečnost silničního provozu pomocí samořídících aut a dokonce se pohybovat po jiných planetách, jako je Mars.