Ljudi mogu razlikovati oko 10 milijuna boja. Da biste ih opazili, potrebno vam je nešto što je poznato kao paleta boja. Paleta boja sadrži alate za prikaz cijelog raspona boja vidljivih ljudskom oku. U stvarnom svijetu, koristite ih za stvaranje estetskih dizajna na papiru, dok ih digitalno koristite za dodavanje boje elementima zaslona.
U konačnici, vaše računalo kodira sve različite nijanse koje vidite na zaslonu koristeći određeni format. S Pythonom možete razviti RGB kodiranu paletu boja u samo nekoliko redaka koda zahvaljujući OpenCV i NumPy modulu.
OpenCV i NumPy modul
Pomoću OpenCV-a možete analizirati slike i videozapise. Besplatan je, otvorenog koda, jednostavan za korištenje i prepun korisnih biblioteka. Oni pružaju tehnike za klasificiranje, lociranje i praćenje objekata u dvije i tri dimenzije. Da biste instalirali OpenCV u svoje okruženje, otvorite terminal i pokrenite:
pip instaliraj opencv-python
NumPy modul je još jedna popularna biblioteka koju ćete vidjeti da koriste mnogi Python programi. NumPy—numerički Python—je modul koji možete koristiti za analizu podataka i znanstveno računalstvo. Omogućuje n-dimenzionalni niz objekata kao i matematičke operacije koji pomažu u manipulaciji tim nizovima.
Da biste instalirali NumPy u svoje okruženje, izvršite:
pip instaliraj numpy
Općenito, koristit ćete OpenCV za obradu slika pomoću tehnika poput detekcije rubova. Zatim možete koristiti NumPy za analizu podataka na obrađenoj slici. Pomoću ove kombinacije možete stvoriti i dekodirati QR kod, klasificirati slike, provoditi optičko prepoznavanje znakova i graditi sustave videonadzora koji mogu otkriti kretanje i pratiti pojedince u stvarnom vremenu.
Kako napraviti paletu boja koristeći Python
Slijedite ove korake za izradu palete boja koristeći OpenCV i NumPy modul u Pythonu.
Ovdje možete pronaći izvor palete boja pomoću Pythona GitHub spremište.
Započnite s uvozom OpenCV i NumPy modula. Definirajte funkciju pod nazivom prazna funkcija() koji sadrži izjavu o prolazu. Prolazna izjava služi kao rezervirano mjesto za kod koji možete napisati u budućnosti. Ovo je osobito korisno s funkcijama poput createTrackbar, koje ćete koristiti kasnije. Zahtijeva važeću funkciju povratnog poziva i za sada možete proslijediti emptyFunction kao rezervirano mjesto.
uvoz cv2
uvoz numpy kao np
defpraznafunkcija():
proći
Generirajte trodimenzionalni niz veličine 512 * 512 * 3 s tipom podataka uint8 koristeći NumPy nula() funkcija. Svaki niz će se sastojati od 512 stupaca i 512 redaka. uint8 predstavlja cijeli broj bez predznaka, pa program popunjava niz nulama.
slika = np.nule((512, 512, 3), np.uint8)
Postavite naziv prozora koji će program prikazati i proslijedite ga namedWindow() funkcija za stvaranje prozora:
naziv prozora = "Paleta boja OpenCV"
cv2.namedWindow (windowName)
Zatim generirajte tri trake tragova za komponente crvene, zelene i plave boje. To možete učiniti koristeći OpenCV createTrackbar() funkcija. Prvo prenesite oznaku kao crvenu, plavu ili zelenu. Drugo, morate proslijediti naziv prozora u koji želite smjestiti ove trake, primjer windowName.
Treći parametar je minimalna granica trake staze, u ovom slučaju 0. Četvrti parametar navodi maksimalnu vrijednost, koja je 255 za 24-bitnu vrijednost boje. Peti i posljednji parametar je funkcija povratnog poziva za koju createTrackbar zahtijeva valjanu funkciju. Zbog toga ste ranije stvorili emptyFunction da djeluje kao rezervirano mjesto.
cv2.createTrackbar('Plava', naziv prozora, 0, 255, prazna funkcija)
cv2.createTrackbar('zeleno', naziv prozora, 0, 255, prazna funkcija)
cv2.createTrackbar('Crvena', naziv prozora, 0, 255, prazna funkcija)
Deklarirajte beskonačnu while petlju i proslijedite naziv prozora zajedno sa slikom koju želite prikazati OpenCV-u imshow() funkcija. Budući da slika sadrži trodimenzionalni niz nula, program u početku prikazuje crni ekran.
Provjerite je li korisnik pritisnuo tipku za izlaz testiranjem vrijednosti iz tipka čekanja() protiv 27 (ASCII kod za tipku Escape). Funkcija waitkey() prikazuje prozor zadani broj milisekundi ili dok ne pritisnete tipku. Prosljeđivanjem jednog kao ulaza, prikazuje prozor na milisekundu, ali se regenerira zbog beskonačne petlje while.
Da biste dobili trenutni položaj trake traga, proslijedite naziv trake traga zajedno s nazivom prozora getTrackbarPos(). Ponovite ovaj korak za tri odvojene komponente boje, plavu, zelenu i crvenu. Upotrijebite operator odsječka da dodijelite tri vrijednosti nizu slika. Ovo će zamijeniti prethodni skup vrijednosti, u početku sve nule, s trenutnim vrijednostima u skladu s položajima trake traga.
dok (Pravi):
cv2.imshow (naziv prozora, slika)ako cv2.waitKey(1) == 27:
pauza
plavo = cv2.getTrackbarPos('Plava', naziv prozora)
zelena = cv2.getTrackbarPos('zeleno', naziv prozora)
crvena = cv2.getTrackbarPos('Crvena', naziv prozora)
slika[:] = [plava, zelena, crvena]
print (plava, zelena, crvena)
Nakon što korisnik pritisne tipku Escape, koristite uništi sve prozore () za zatvaranje prozora koje je program otvorio:
cv2.destroyAllWindows()
Na kraju, sastavite sve zajedno i pokrenite da kontrolirate i pregledate svoju paletu boja.
Izlaz Python programa palete boja
Prilikom pokretanja gornjeg programa pojavljuje se prozor koji sadrži tri trake tragova za plavu, zelenu i crvenu boju. Trake staze pomiču se u rasponu od 0 do 255. Kada mijenjate vrijednosti različitih traka, trebali biste vidjeti različite nijanse boja u odjeljku ispod.
U ovom prvom primjeru možete vidjeti postavku plave trake kao 0, zelene kao 69 i crvene kao 255. Rezultirajuća izlazna boja je nijansa narančaste/crvene. Osim toga, prozor terminala prikazuje vrijednosti boja kao 0 69 255.
Slično, kada postavite plavu traku na 130, zelenu na 0 i crvenu na 75, dobit ćete indigo boju.
Razne primjene OpenCV-a
OpenCV nudi vrijedne funkcije za zadatke kao što su obrada slika, prepoznavanje objekata, prepoznavanje lica i praćenje. Korištenjem OpenCV-a možete proizvesti aplikacije računalnog vida u stvarnom vremenu koje bi bile od koristi u područjima kao što su robotika, industrijska automatizacija, medicinsko snimanje i sustavi nadzora.
Budućnost računalnog vida je obećavajuća. Moći ćete koristiti računalni vid za pomoć osobama oštećena vida, postići bolji rast u poljoprivredi, poboljšati sigurnost na cestama koristeći samovozeće automobile, pa čak i navigirati drugim planetima, poput Marsa.