Az ember körülbelül 10 millió színt tud megkülönböztetni. Ezek észleléséhez valami színpalettára van szükség. A színpaletta az emberi szem által látható színek teljes skálájának megjelenítéséhez szükséges eszközöket tartalmazza. A való világban esztétikus minták készítésére használhatja őket papíron, digitálisan pedig a képernyőelemek színezésére.
Végső soron a számítógép egy adott formátumban kódolja a képernyőn látható összes különböző árnyalatot. A Python segítségével az OpenCV és a NumPy modulnak köszönhetően néhány sornyi kóddal RGB-kódolt színpalettát fejleszthet.
Az OpenCV és a NumPy modul
Az OpenCV segítségével képeket és videókat elemezhet. Ingyenes, nyílt forráskódú, egyszerűen használható, és tele van hasznos könyvtárakkal. Ezek technikákat biztosítanak az objektumok két- és háromdimenziós osztályozására, helymeghatározására és követésére. Az OpenCV környezetbe való telepítéséhez nyisson meg egy terminált, és futtassa:
pip install opencv-python
A NumPy modul egy másik népszerű könyvtár, amelyet sok Python program használ. A NumPy – numerikus Python – egy adatelemzésre és tudományos számítástechnikára használható modul. N-dimenziós tömbobjektumokat biztosít, valamint matematikai műveletek amelyek segítenek ezen tömbök manipulálásában.
A NumPy környezetbe való telepítéséhez hajtsa végre:
pip install numpy
Általában az OpenCV-t használja a képek feldolgozásához olyan technikákkal, mint az élérzékelés. Ezután a NumPy segítségével adatelemzést végezhet a feldolgozott képen. Ezzel a kombinációval megteheti QR-kód létrehozása és dekódolása, osztályozza a képeket, végezzen optikai karakterfelismerést, és olyan videó megfigyelő rendszereket építsen, amelyek képesek mozgást észlelni és valós időben követni az egyéneket.
Hogyan készítsünk színpalettát Python használatával
Kövesse az alábbi lépéseket a színpaletta létrehozásához az OpenCV és a NumPy modul használatával a Pythonban.
Ebben megtalálhatja a Python használatával készült színpaletta forrását GitHub adattár.
Kezdje az OpenCV és a NumPy modulok importálásával. Határozzon meg egy nevű függvényt üres függvény() amely tartalmazza a pass utasítást. A pass utasítás a jövőben írható kód helyőrzőjeként működik. Ez különösen hasznos olyan funkcióknál, mint a createTrackbar, amelyeket később használni fog. Érvényes visszahívási függvényt igényel, és egyelőre helyőrzőként adhatja át az emptyFunction-t.
import cv2
import zsibbadt mint np
defüresFunkció():
pass
Hozzon létre egy 512 * 512 * 3 méretű háromdimenziós tömböt uint8 adattípussal a NumPy segítségével nulla() funkció. Minden tömb 512 oszlopból és 512 sorból áll. uint8 előjel nélküli egész számot jelöl, így a program nullákkal tölti ki a tömböt.
kép = np.zeros((512, 512, 3), np.uint8)
Állítsa be a program által megjelenített ablak nevét, és adja át a namedWindow() függvény ablak létrehozásához:
ablakNév = "OpenCV színpaletta"
cv2.namedWindow (ablaknév)
Ezután hozzon létre három nyomsávot a piros, zöld és kék színkomponensekhez. Ezt megteheti az OpenCV segítségével CreateTrackbar() funkció. Először is adja át a címkét pirosnak, kéknek vagy zöldnek. Másodszor, át kell adnia annak az ablaknak a nevét, amelybe ezeket a sávokat el szeretné helyezni, például ablaknév.
A harmadik paraméter a nyomsáv minimális határa, ebben az esetben 0. A negyedik paraméter a maximális értéket adja meg, amely 255 24 bites színérték esetén. Az ötödik és egyben utolsó paraméter egy visszahívási függvény, amelyhez a createTrackbar érvényes függvényt igényel. Ezért hozta létre korábban az emptyFunction-t, hogy helyőrzőként működjön.
cv2.createTrackbar('Kék', ablaknév, 0, 255, üresFunkció)
cv2.createTrackbar('Zöld', ablaknév, 0, 255, üresFunkció)
cv2.createTrackbar('Piros', ablaknév, 0, 255, üresFunkció)
Deklaráljon egy végtelen while ciklust, és adja át az ablak nevét a megjeleníteni kívánt képpel együtt az OpenCV-nek imshow() funkció. Mivel a kép nullák háromdimenziós tömbjét tartalmazza, a program kezdetben fekete képernyőt jelenít meg.
Ellenőrizze, hogy a felhasználó megnyomta-e az escape billentyűt az érték tesztelésével várj kulcs() 27 ellenében (az Escape billentyű ASCII-kódja). A waitkey() függvény megjeleníti az ablakot a megadott számú ezredmásodpercig, vagy amíg meg nem nyom egy gombot. Ha az egyiket bemenetként adjuk át, ez egy ezredmásodpercig megjeleníti az ablakot, de a végtelen while ciklus miatt újratermelődik.
A sáv aktuális pozíciójának megállapításához adja át a sáv nevét az ablak nevével együtt getTrackbarPos(). Ismételje meg ezt a lépést a három különálló színösszetevő, a kék, a zöld és a piros esetében. A szelet operátorral rendelje hozzá a három értéket a képtömbhöz. Ez lecseréli az előző értékkészletet, kezdetben az összes nullát, az aktuális értékekkel a sáv helyzetének megfelelően.
míg (Igaz):
cv2.imshow (ablaknév, kép)ha cv2.waitKey(1) == 27:
szünet
blue = cv2.getTrackbarPos('Kék', ablaknév)
zöld = cv2.getTrackbarPos('Zöld', ablaknév)
red = cv2.getTrackbarPos('Piros', ablaknév)
kép[:] = [kék, zöld, piros]
nyomat (kék, zöld, piros)
Miután a felhasználó megnyomta az Escape billentyűt, használja semmisítse meg az összes ablakot () a program által megnyitott ablakok bezárásához:
cv2.destroyAllWindows()
Végül állítsa össze az egészet, és futtassa a színpaletta vezérléséhez és megtekintéséhez.
A Python színpaletta program kimenete
A fenti program futtatásakor megjelenik egy ablak, amely három nyomsávot tartalmaz a kék, zöld és piros színekhez. A nyomsávok 0 és 255 között mozognak. Ha módosítja a különböző sávok értékeit, az alábbi részben különböző színárnyalatokat kell látnia.
Ebben az első példában a kék sáv beállítása 0, a zöld 69, a piros pedig 255. Az eredményül kapott kimeneti szín egy narancssárga/piros árnyalat. Ezenkívül a terminálablak a színértékeket 0 69 255-ként jeleníti meg.
Hasonlóképpen, ha a kék sávot 130-ra, a zöldet 0-ra, a pirosat pedig 75-re állítja, akkor Indigó színt kap.
Az OpenCV különféle alkalmazásai
Az OpenCV értékes funkciókat kínál olyan feladatokhoz, mint a képfeldolgozás, tárgyfelismerés, arcfelismerés és követés. Az OpenCV segítségével valós idejű számítógépes látási alkalmazásokat készíthet, amelyek hasznosak lennének olyan területeken, mint a robotika, az ipari automatizálás, az orvosi képalkotás és a felügyeleti rendszerek.
A számítógépes látás jövője ígéretes. A számítógépes látás segítségével segítheti a látássérülteket, jobb növekedést érhet el a mezőgazdaságban, növelheti a közúti biztonságot az önvezető autók használatával, és még más bolygókon is navigálhat, például a Marson.