Kaltaisesi lukijat auttavat tukemaan MUO: ta. Kun teet ostoksen käyttämällä sivustollamme olevia linkkejä, voimme ansaita kumppanipalkkion. Lue lisää.

Ihminen voi erottaa noin 10 miljoonaa väriä. Niiden havaitsemiseksi tarvitset jotain, joka tunnetaan nimellä väripaletti. Väripaletti sisältää työkalut, joilla voidaan näyttää koko ihmissilmälle näkyvä värivalikoima. Todellisessa maailmassa käytät niitä esteettisten kuvioiden luomiseen paperille, kun taas digitaalisesti käytät niitä värien lisäämiseen näytön elementteihin.

Viime kädessä tietokone koodaa kaikki näytöllä näkyvät eri sävyt käyttämällä tiettyä muotoa. Pythonilla voit kehittää RGB-koodatun väripaletin vain muutamalla koodirivillä OpenCV: n ja NumPy-moduulin ansiosta.

OpenCV ja NumPy-moduuli

Voit analysoida kuvia ja videoita OpenCV: n avulla. Se on ilmainen, avoimen lähdekoodin, helppokäyttöinen ja täynnä hyödyllisiä kirjastoja. Ne tarjoavat tekniikoita kohteiden luokitteluun, paikantamiseen ja seuraamiseen sekä kahdessa että kolmessa ulottuvuudessa. Asenna OpenCV ympäristöösi avaamalla pääte ja suorittamalla:

pip asennus opencv-python

NumPy-moduuli on toinen suosittu kirjasto, jota monet Python-ohjelmat käyttävät. NumPy – numeerinen Python – on moduuli, jota voit käyttää tietojen analysointiin ja tieteelliseen laskemiseen. Se tarjoaa n-ulotteisia taulukkoobjekteja sekä matemaattisia operaatioita jotka auttavat näiden ryhmien käsittelyssä.

Asenna NumPy ympäristöösi suorittamalla:

pip asennus numpy

Yleensä käytät OpenCV: tä kuvien käsittelyyn käyttämällä tekniikoita, kuten reunantunnistusta. Tämän jälkeen voit käyttää NumPyä tietojen analysointiin käsitellylle kuvalle. Käyttämällä tätä yhdistelmää voit luoda ja purkaa QR-koodi, luokitella kuvia, suorittaa optista merkintunnistusta ja rakentaa videovalvontajärjestelmiä, jotka voivat havaita liikkeen ja seurata henkilöitä reaaliajassa.

Väripaletin rakentaminen Pythonilla

Seuraa näitä ohjeita luodaksesi väripaletin OpenCV- ja NumPy-moduulin avulla Pythonissa.

Löydät Python-väripaletin lähteen tästä GitHub arkisto.

Aloita tuomalla OpenCV- ja NumPy-moduulit. Määritä funktio nimeltä tyhjäfunktio() joka sisältää pass-lausekkeen. Pass-lause toimii paikkamerkkinä koodille, jonka voit kirjoittaa tulevaisuudessa. Tämä on erityisen hyödyllistä käytettäessä toimintoja, kuten createTrackbar, joita käytät myöhemmin. Se vaatii kelvollisen takaisinkutsun funktion ja voit välittää emptyFunctionin toistaiseksi paikkamerkkinä.

tuonti cv2
tuonti nuhjuinen kuten np

deftyhjä toiminto():
kulkea

Luo kolmiulotteinen taulukko, jonka koko on 512 * 512 * 3 tietotyypillä uint8 NumPyn avulla nolla() toiminto. Jokainen taulukko koostuu 512 sarakkeesta ja 512 rivistä. uint8 edustaa etumerkitöntä kokonaislukua, joten ohjelma täyttää taulukon nollilla.

kuva = np.zeros((512, 512, 3), np.uint8)

Aseta ohjelman näyttämän ikkunan nimi ja välitä se sovellukselle namedWindow() toiminto ikkunan luomiseksi:

ikkunannimi = "OpenCV väripaletti"
cv2.namedWindow (windowName)

Luo seuraavaksi kolme raitapalkkia punaiselle, vihreälle ja siniselle värikomponentille. Voit tehdä tämän käyttämällä OpenCV: tä createTrackbar() toiminto. Anna ensin tarra punaisena, sinisenä tai vihreänä. Toiseksi sinun on välitettävä sen ikkunan nimi, johon haluat sijoittaa nämä palkit, esimerkiksi ikkunannimi.

Kolmas parametri on raitapalkin minimiraja, tässä tapauksessa 0. Neljäs parametri määrittää maksimiarvon, joka on 255 24-bittiselle väriarvolle. Viides ja viimeinen parametri on takaisinsoittotoiminto, jolle createTrackbar vaatii kelvollisen funktion. Tästä syystä loit aiemmin tyhjäfunktion toimimaan paikkamerkkinä.

cv2.createTrackbar('Sininen', ikkunan nimi, 0, 255, tyhjätoiminto)
cv2.createTrackbar('Vihreä', ikkunan nimi, 0, 255, tyhjätoiminto)
cv2.createTrackbar('Punainen', ikkunan nimi, 0, 255, tyhjätoiminto)

Ilmoita ääretön while-silmukka ja välitä ikkunan nimi yhdessä näytettävän kuvan kanssa OpenCV: lle imshow() toiminto. Koska kuva sisältää kolmiulotteisen nollien joukon, ohjelma näyttää aluksi mustan näytön.

Tarkista, onko käyttäjä painanut Esc-näppäintä testaamalla arvoa from odotusavain () vastaan ​​27 (Escape-näppäimen ASCII-koodi). Odotusnäppäin()-toiminto näyttää ikkunan tietyn määrän millisekunteja tai kunnes painat näppäintä. Antamalla yhden syötteenä se näyttää ikkunan millisekunnin ajan, mutta uusiutuu äärettömän while-silmukan vuoksi.

Saadaksesi ratapalkin nykyisen sijainnin, välitä raitapalkin nimi yhdessä ikkunan nimen kanssa getTrackbarPos(). Toista tämä vaihe kolmelle erilliselle värikomponentille, siniselle, vihreälle ja punaiselle. Käytä slice-operaattoria määrittääksesi kolme arvoa kuvataulukolle. Tämä korvaa aiemmat arvot, aluksi kaikki nollat, nykyisillä arvoilla raitapalkin sijainnin mukaan.

sillä aikaa (Totta):
cv2.imshow (ikkunan nimi, kuva)

jos cv2.waitKey(1) == 27:
tauko

sininen = cv2.getTrackbarPos('Sininen', ikkunan nimi)
vihreä = cv2.getTrackbarPos('Vihreä', ikkunan nimi)
punainen = cv2.getTrackbarPos('Punainen', ikkunan nimi)
kuva[:] = [sininen, vihreä, punainen]
printti (sininen, vihreä, punainen)

Kun käyttäjä painaa Esc-näppäintä, käytä tuhoa kaikki ikkunat() sulkeaksesi ohjelman avaamat ikkunat:

cv2.destroyAllWindows()

Lopuksi yhdistä kaikki ja käytä sitä hallitaksesi ja tarkastellaksesi väripalettiasi.

Python-väripalettiohjelman tulos

Kun yllä oleva ohjelma suoritetaan, näkyviin tulee ikkuna, joka sisältää kolme raitapalkkia väreille Sininen, Vihreä ja Punainen. Raitapalkit liikkuvat välillä 0 - 255. Kun muutat eri palkkien arvoja, sinun pitäisi nähdä eri värisävyt alla olevassa osiossa.

Tässä ensimmäisessä esimerkissä sinisen palkin asetus on 0, vihreä 69 ja punainen 255. Tuloksena oleva tulosteen väri on oranssin/punaisen sävy. Lisäksi pääteikkuna näyttää väriarvot muodossa 0 69 255.

Vastaavasti, kun asetat sinisen palkin arvoksi 130, vihreäksi 0:ksi ja punaiseksi 75:ksi, saat Indigo-värin.

OpenCV: n eri sovellukset

OpenCV tarjoaa arvokkaita toimintoja tehtäviin, kuten kuvankäsittelyyn, objektien tunnistukseen, kasvojentunnistukseen ja seurantaan. OpenCV: n avulla voit tuottaa reaaliaikaisia ​​tietokonenäkösovelluksia, jotka olisivat siunaus esimerkiksi robotiikassa, teollisuusautomaatiossa, lääketieteellisessä kuvantamisessa ja valvontajärjestelmissä.

Tietokonenäön tulevaisuus on lupaava. Pystyt käyttämään tietokonenäköä auttamaan näkövammaisia, lisäämään maatalouden kasvua, parantamaan liikenneturvallisuutta käyttämällä itseohjautuvia autoja ja jopa navigoimaan muilla planeetoilla, kuten Marsilla.