Žmonės gali atskirti apie 10 milijonų spalvų. Norėdami juos suvokti, jums reikia kažko žinomo kaip spalvų paletė. Spalvų paletėje yra įrankiai, leidžiantys parodyti visą žmogaus akiai matomų spalvų diapazoną. Realiame pasaulyje juos naudojate estetiniams piešiniams popieriuje kurti, o skaitmeniniu būdu – ekrano elementams suteikti spalvų.
Galiausiai jūsų kompiuteris užkoduoja visus skirtingus ekrane matomus atspalvius naudodamas tam tikrą formatą. Naudodami „Python“, naudodami „OpenCV“ ir „NumPy“ modulį, galite sukurti RGB koduotą spalvų paletę vos keliomis kodo eilutėmis.
OpenCV ir NumPy modulis
Galite analizuoti vaizdus ir vaizdo įrašus naudodami OpenCV. Tai nemokama, atvirojo kodo, paprasta naudoti ir supakuota su naudingomis bibliotekomis. Tai suteikia dviejų ir trijų dimensijų objektų klasifikavimo, vietos nustatymo ir sekimo metodus. Norėdami įdiegti OpenCV savo aplinkoje, atidarykite terminalą ir paleiskite:
pip įdiegti opencv-python
„NumPy“ modulis yra dar viena populiari biblioteka, kurią naudoja daugelis „Python“ programų. NumPy – skaitmeninis Python – yra modulis, kurį galite naudoti duomenų analizei ir moksliniam skaičiavimui. Jame pateikiami n matmenų masyvo objektai, taip pat matematines operacijas kurie padeda manipuliuoti šiais masyvais.
Norėdami įdiegti NumPy savo aplinkoje, vykdykite:
pip install numpy
Paprastai vaizdams apdoroti naudosite OpenCV naudodami tokius metodus kaip kraštų aptikimas. Tada galite naudoti NumPy apdoroto vaizdo duomenų analizei atlikti. Naudodami šį derinį galite sukurti ir iššifruoti QR kodą, klasifikuoti vaizdus, atlikti optinį simbolių atpažinimą ir kurti vaizdo stebėjimo sistemas, kurios gali aptikti judesį ir sekti asmenis realiu laiku.
Kaip sukurti spalvų paletę naudojant Python
Atlikite šiuos veiksmus, kad sukurtumėte spalvų paletę naudodami OpenCV ir NumPy modulį Python.
Čia galite rasti spalvų paletės šaltinį naudodami Python GitHub saugykla.
Pradėkite importuodami OpenCV ir NumPy modulius. Apibrėžkite funkciją pavadintą tuščia funkcija () kuriame yra patvirtinimo pareiškimas. Pastebėjimo sakinys veikia kaip kodo, kurį galėsite įrašyti ateityje, rezervuota vieta. Tai ypač naudinga naudojant tokias funkcijas kaip createTrackbar, kurias naudosite vėliau. Tam reikalinga galiojanti atgalinio skambinimo funkcija ir kol kas galite perduoti emptyFunction kaip rezervuotąją vietą.
importuoti cv2
importuoti nelygus kaip np
deftuščiaFunkcija():
praeiti
Sukurkite trimatį 512 * 512 * 3 dydžio masyvą su duomenų tipu uint8 naudodami NumPy's nulis () funkcija. Kiekvieną masyvą sudarys 512 stulpelių ir 512 eilučių. uint8 reiškia beženklį sveikąjį skaičių, todėl programa užpildo masyvą nuliais.
vaizdas = np.zeros((512, 512, 3), np.uint8)
Nustatykite lango, kurį rodys programa, pavadinimą ir perduokite jį namedWindow() funkcija langui sukurti:
lango pavadinimas = „OpenCV spalvų paletė“
cv2.namedWindow (lango pavadinimas)
Tada sugeneruokite tris takelių juostas raudonos, žalios ir mėlynos spalvos komponentams. Tai galite padaryti naudodami OpenCV CreateTrackbar() funkcija. Pirmiausia perduokite etiketę kaip raudoną, mėlyną arba žalią. Antra, turite perduoti lango, kuriame norite įdėti šias juostas, pavadinimą, pavyzdžiui, lango pavadinimas.
Trečiasis parametras yra minimali takelio juostos riba, šiuo atveju 0. Ketvirtasis parametras nurodo didžiausią reikšmę, kuri yra 255 24 bitų spalvos vertei. Penktasis ir paskutinis parametras yra atgalinio skambinimo funkcija, kuriai CreateTrackbar reikalinga tinkama funkcija. Štai kodėl anksčiau sukūrėte tuščią funkciją, kad veiktų kaip rezervuota vieta.
cv2.createTrackbar('mėlyna', lango pavadinimas, 0, 255, tuščia funkcija)
cv2.createTrackbar('Žalias', lango pavadinimas, 0, 255, tuščia funkcija)
cv2.createTrackbar('raudona', lango pavadinimas, 0, 255, tuščia funkcija)
Paskelbkite begalinę while kilpą ir perduokite lango pavadinimą kartu su vaizdu, kurį norite rodyti OpenCV imshow () funkcija. Kadangi vaizde yra trimatis nulių masyvas, programa iš pradžių rodo juodą ekraną.
Patikrinkite, ar vartotojas paspaudė pabėgimo klavišą, išbandydamas reikšmę nuo palaukti () prieš 27 (ASCII kodas, skirtas pabėgimo klavišui). Funkcija waitkey() rodo langą tam tikram milisekundžių skaičiui arba tol, kol paspausite klavišą. Perdavus vieną kaip įvestį, milisekundei rodomas langas, bet atsinaujina dėl begalinės while ciklo.
Norėdami sužinoti dabartinę sekimo juostos padėtį, perduokite takelio juostos pavadinimą kartu su lango pavadinimu getTrackbarPos(). Pakartokite šį veiksmą trims atskiriems spalvų komponentams – mėlynai, žaliai ir raudonai. Norėdami priskirti tris vaizdų masyvo reikšmes, naudokite pjūvio operatorių. Tai pakeis ankstesnį reikšmių rinkinį, iš pradžių visus nulius, dabartinėmis reikšmėmis pagal takelio juostos padėtį.
kol (Tiesa):
cv2.imshow (lango pavadinimas, vaizdas)jeigu cv2.waitKey(1) == 27:
pertrauka
mėlyna = cv2.getTrackbarPos('mėlyna', lango pavadinimas)
žalia = cv2.getTrackbarPos('Žalias', lango pavadinimas)
raudona = cv2.getTrackbarPos('raudona', lango pavadinimas)
vaizdas [:] = [mėlyna, žalia, raudona]
spauda (mėlyna, žalia, raudona)
Kai vartotojas paspaus klavišą Escape, naudokite sunaikinti visus langus () Norėdami uždaryti programos atidarytus langus:
cv2.destroyAllWindows()
Galiausiai sudėkite viską ir paleiskite, kad galėtumėte valdyti ir peržiūrėti spalvų paletę.
Python spalvų paletės programos išvestis
Paleidus aukščiau esančią programą, pasirodo langas, kuriame yra trys mėlynos, žalios ir raudonos spalvų takelių juostos. Bėgių juostos juda nuo 0 iki 255. Kai keičiate skirtingų juostų reikšmes, toliau pateiktame skyriuje turėtumėte matyti skirtingus spalvų atspalvius.
Šiame pirmame pavyzdyje galite matyti mėlynos juostos nustatymą kaip 0, žalią kaip 69 ir raudoną kaip 255. Gauta išvesties spalva yra oranžinės/raudonos spalvos. Be to, terminalo lange rodomos spalvų reikšmės kaip 0 69 255.
Panašiai nustatę mėlyną juostą kaip 130, žalią kaip 0 ir raudoną kaip 75, gausite Indigo spalvą.
Įvairios OpenCV programos
OpenCV siūlo vertingas funkcijas tokioms užduotims kaip vaizdo apdorojimas, objektų atpažinimas, veido atpažinimas ir sekimas. Naudodami OpenCV galite kurti realaus laiko kompiuterinės vizijos programas, kurios būtų naudingos tokiose srityse kaip robotika, pramoninė automatika, medicininis vaizdavimas ir stebėjimo sistemos.
Kompiuterinės vizijos ateitis yra daug žadanti. Galėsite naudoti kompiuterinį regėjimą, kad padėtumėte silpnaregiams, geriau augtumėte žemės ūkyje, padidintumėte kelių eismo saugumą naudodami savarankiškai važiuojančius automobilius ir netgi galėsite naršyti po kitas planetas, pvz., Marsą.