Ľudia dokážu rozlíšiť asi 10 miliónov farieb. Na ich vnímanie potrebujete niečo známe ako farebná paleta. Paleta farieb obsahuje nástroje na zobrazenie celého rozsahu farieb viditeľných ľudským okom. V skutočnom svete ich používate na vytváranie estetických návrhov na papieri, zatiaľ čo digitálne ich používate na pridávanie farieb do prvkov obrazovky.
Nakoniec váš počítač zakóduje všetky rôzne odtiene, ktoré vidíte na obrazovke, pomocou určitého formátu. S Pythonom môžete vytvoriť farebnú paletu kódovanú RGB v niekoľkých riadkoch kódu vďaka modulom OpenCV a NumPy.
Modul OpenCV a NumPy
Obrázky a videá môžete analyzovať pomocou OpenCV. Je bezplatný, s otvoreným zdrojom, jednoducho sa používa a obsahuje užitočné knižnice. Tieto poskytujú techniky na klasifikáciu, lokalizáciu a sledovanie objektov v dvoch aj troch dimenziách. Ak chcete nainštalovať OpenCV vo svojom prostredí, otvorte terminál a spustite:
pip nainštalovať opencv-python
Modul NumPy je ďalšou populárnou knižnicou, ktorú uvidíte v mnohých programoch Python. NumPy — numerický Python — je modul, ktorý môžete použiť na analýzu údajov a vedecké výpočty. Poskytuje aj n-rozmerné objekty poľa matematické operácie ktoré pomáhajú pri manipulácii s týmito poliami.
Ak chcete nainštalovať NumPy vo svojom prostredí, vykonajte:
pip install numpy
Vo všeobecnosti budete OpenCV používať na spracovanie obrázkov pomocou techník, ako je detekcia hrán. Potom môžete použiť NumPy na vykonanie analýzy údajov na spracovanom obrázku. Pomocou tejto kombinácie môžete vytvoriť a dekódovať QR kód, klasifikovať obrázky, vykonávať optické rozpoznávanie znakov a budovať video monitorovacie systémy, ktoré dokážu detekovať pohyb a sledovať jednotlivcov v reálnom čase.
Ako vytvoriť farebnú paletu pomocou Pythonu
Ak chcete vytvoriť paletu farieb pomocou modulu OpenCV a NumPy v Pythone, postupujte podľa týchto krokov.
Zdroj palety farieb pomocou Pythonu nájdete v tomto GitHub Úložisko.
Začnite importovaním modulov OpenCV a NumPy. Definujte funkciu s názvom prázdna funkcia () ktorý obsahuje príkaz pass. Príkaz pass funguje ako zástupný symbol pre kód, ktorý môžete napísať v budúcnosti. To je užitočné najmä pri funkciách, ako je createTrackbar, ktoré použijete neskôr. Vyžaduje si to platnú funkciu spätného volania a zatiaľ môžete zadať emptyFunction ako zástupný symbol.
importovať cv2
importovať numpy ako np
defemptyFunction():
prejsť
Vytvorte trojrozmerné pole veľkosti 512 * 512 * 3 s typom údajov uint8 pomocou NumPy's nula () funkciu. Každé pole bude pozostávať z 512 stĺpcov a 512 riadkov. uint8 predstavuje celé číslo bez znamienka, takže program vyplní pole nulami.
image = np.zeros((512, 512, 3), np.uint8)
Nastavte názov okna, ktoré bude program zobrazovať a odovzdá ho NameWindow() funkcia na vytvorenie okna:
názov okna = "Paleta farieb OpenCV"
cv2.namedWindow (windowName)
Potom vygenerujte tri pruhy pre červenú, zelenú a modrú zložku. Môžete to urobiť pomocou OpenCV createTrackbar() funkciu. Najprv odovzdajte štítok ako červený, modrý alebo zelený. Po druhé, musíte zadať názov okna, kam chcete umiestniť tieto pruhy, napríklad windowName.
Tretím parametrom je minimálna hranica lišty, v tomto prípade 0. Štvrtý parameter určuje maximálnu hodnotu, ktorá je 255 pre 24-bitovú hodnotu farby. Piaty a posledný parameter je funkcia spätného volania, pre ktorú createTrackbar vyžaduje platnú funkciu. To je dôvod, prečo ste predtým vytvorili funkciu emptyFunction, ktorá slúži ako zástupný symbol.
cv2.createTrackbar('Modrá', názov okna, 0, 255, emptyFunction)
cv2.createTrackbar('Zelená', názov okna, 0, 255, emptyFunction)
cv2.createTrackbar('červená', názov okna, 0, 255, emptyFunction)
Vyhláste nekonečnú slučku while a odovzdajte názov okna spolu s obrázkom, ktorý chcete zobraziť, do OpenCV imshow() funkciu. Keďže obrázok obsahuje trojrozmerné pole núl, program na začiatku zobrazí čiernu obrazovku.
Skontrolujte, či používateľ stlačil kláves Escape testovaním hodnoty z waitkey() proti 27 (kód ASCII pre kláves Escape). Funkcia waitkey() zobrazí okno na zadaný počet milisekúnd alebo kým nestlačíte kláves. Odovzdaním jedného ako vstupu zobrazí okno na milisekundu, ale obnoví sa vďaka nekonečnej slučke while.
Ak chcete získať aktuálnu polohu pruhu trasy, odovzdajte názov pruhu trasy spolu s názvom okna getTrackbarPos(). Opakujte tento krok pre tri samostatné farebné zložky, modrú, zelenú a červenú. Pomocou operátora rezu priraďte tri hodnoty poli obrázkov. Toto nahradí predchádzajúcu množinu hodnôt, spočiatku všetky nuly, aktuálnymi hodnotami podľa polohy lišty.
zatiaľ čo (Pravda):
cv2.imshow (názov okna, obrázok)ak cv2.waitKey(1) == 27:
prestávka
modrá = cv2.getTrackbarPos('Modrá', názov okna)
zelená = cv2.getTrackbarPos('Zelená', názov okna)
červená = cv2.getTrackbarPos('červená', názov okna)
obrázok[:] = [modrá, zelená, červená]
potlač (modrá, zelená, červená)
Keď používateľ stlačí kláves Escape, použite zničitVšetkyWindows() na zatvorenie okien, ktoré program otvoril:
cv2.destroyAllWindows()
Nakoniec to všetko poskladajte a spustite na ovládanie a zobrazenie palety farieb.
Výstup programu Python Color Palette
Po spustení programu vyššie sa zobrazí okno, ktoré obsahuje tri pruhy pre farby modrá, zelená a červená. Pruhy stopy sa pohybujú v rozsahu od 0 do 255. Keď zmeníte hodnoty rôznych pruhov, v časti nižšie by ste mali vidieť rôzne odtiene farieb.
V tomto prvom príklade môžete vidieť nastavenie modrého pruhu na 0, zeleného na 69 a červeného na 255. Výsledná výstupná farba je odtieň oranžovej/červenej. Okrem toho sa v okne terminálu zobrazujú hodnoty farieb ako 0 69 255.
Podobne, keď nastavíte modrý pruh na 130, zelený na 0 a červený na 75, získate indigovú farbu.
Rôzne aplikácie OpenCV
OpenCV ponúka cenné funkcie pre úlohy, ako je spracovanie obrazu, rozpoznávanie objektov, rozpoznávanie tváre a sledovanie. Pomocou OpenCV môžete vytvárať aplikácie počítačového videnia v reálnom čase, ktoré by boli prínosom v oblastiach ako robotika, priemyselná automatizácia, lekárske zobrazovanie a sledovacie systémy.
Budúcnosť počítačového videnia je sľubná. Budete môcť používať počítačové videnie na pomoc zrakovo postihnutým, dosiahnuť lepší rast v poľnohospodárstve, zvýšiť bezpečnosť na cestách pomocou autonómnych áut a dokonca sa pohybovať na iných planétach, ako je Mars.