Az Önhöz hasonló olvasók támogatják a MUO-t. Amikor a webhelyünkön található linkek használatával vásárol, társult jutalékot kaphatunk. Olvass tovább.

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:

instagram viewer
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.