Mennesker kan skille rundt 10 millioner farger. For å oppfatte dem trenger du noe kjent som en fargepalett. En fargepalett inneholder verktøyene for å vise hele spekteret av farger som er synlige for det menneskelige øyet. I den virkelige verden bruker du dem til å lage estetiske design på papir, mens du digitalt bruker dem til å legge farge til skjermelementer.
Til syvende og sist koder datamaskinen alle de forskjellige nyansene du ser på skjermen ved hjelp av et bestemt format. Med Python kan du utvikle en RGB-kodet fargepalett på bare noen få linjer med kode takket være OpenCV og NumPy-modulen.
OpenCV og NumPy-modulen
Du kan analysere bilder og videoer ved hjelp av OpenCV. Den er gratis, åpen kildekode, enkel å bruke og fullpakket med nyttige biblioteker. Disse gir teknikker for å klassifisere, lokalisere og spore objekter i både to og tre dimensjoner. For å installere OpenCV i miljøet ditt, åpne en terminal og kjør:
pip installer opencv-python
NumPy-modulen er et annet populært bibliotek du vil se mange Python-programmer bruke. NumPy – numerisk Python – er en modul du kan bruke til dataanalyse og vitenskapelig databehandling. Det gir n-dimensjonale array-objekter så vel som matematiske operasjoner som hjelper til med å manipulere disse matrisene.
For å installere NumPy i miljøet ditt, kjør:
pip install numpy
Vanligvis vil du bruke OpenCV til å behandle bilder ved hjelp av teknikker som kantdeteksjon. Du kan deretter bruke NumPy til å utføre dataanalyse på det behandlede bildet. Ved å bruke denne kombinasjonen kan du opprette og dekode en QR-kode, klassifisere bilder, utføre optisk tegngjenkjenning og bygge videoovervåkingssystemer som kan oppdage bevegelse og spore individer i sanntid.
Hvordan bygge en fargepalett ved hjelp av Python
Følg disse trinnene for å bygge en fargepalett ved hjelp av OpenCV og NumPy-modulen i Python.
Du kan finne kilden til fargepalett ved å bruke Python i denne GitHub oppbevaringssted.
Begynn med å importere OpenCV- og NumPy-modulene. Definer en funksjon kalt tommefunksjon() som inneholder passerklæringen. Passerklæringen fungerer som en plassholder for kode du kan skrive i fremtiden. Dette er spesielt nyttig med funksjoner som createTrackbar, som du vil bruke senere. Det krever en gyldig tilbakeringingsfunksjon, og du kan sende emptyFunction som plassholder inntil videre.
import cv2
import nusset som np
deftomFunksjon():
sende
Generer en tredimensjonal matrise med størrelsen 512 * 512 * 3 med en datatype uint8 ved å bruke NumPy's null() funksjon. Hver matrise vil bestå av 512 kolonner og 512 rader. uint8 representerer et heltall uten fortegn, så programmet fyller matrisen med nuller.
bilde = np.null((512, 512, 3), np.uint8)
Angi navnet på vinduet programmet skal vise og send det til namedWindow() funksjon for å lage et vindu:
vindunavn = "OpenCV fargepalett"
cv2.namedWindow (windowName)
Deretter genererer du tre sporfelter for de røde, grønne og blå fargekomponentene. Du kan gjøre dette ved å bruke OpenCV-er createTrackbar() funksjon. Først sender du etiketten som rød, blå eller grønn. For det andre må du sende inn navnet på vinduet der du vil plassere disse stolpene, eksempel windowName.
Den tredje parameteren er minimumsgrensen for sporlinjen, 0 i dette tilfellet. Den fjerde parameteren spesifiserer maksimumsverdien, som er 255 for en 24-biters fargeverdi. Den femte og siste parameteren er en tilbakeringingsfunksjon som createTrackbar krever en gyldig funksjon for. Dette er grunnen til at du opprettet emptyFunction tidligere, for å fungere som en plassholder.
cv2.createTrackbar('Blå', vindunavn, 0, 255, tomme funksjon)
cv2.createTrackbar('Grønn', vindunavn, 0, 255, tomme funksjon)
cv2.createTrackbar('Rød', vindunavn, 0, 255, tomme funksjon)
Erklær en uendelig mens-løkke og send vinduets navn sammen med bildet du vil vise til OpenCVs imshow() funksjon. Siden bildet inneholder en tredimensjonal serie med nuller, viser programmet en svart skjerm til å begynne med.
Sjekk om brukeren har trykket på escape-tasten ved å teste verdien fra ventetast() mot 27 (ASCII-koden for Escape-tasten). Waitkey()-funksjonen viser vinduet i det gitte antall millisekunder eller til du trykker på en tast. Ved å sende en som inngang, viser den vinduet i et millisekund, men regenererer på grunn av den uendelige while-løkken.
For å få gjeldende posisjon til sporlinjen, send navnet på sporlinjen sammen med navnet på vinduet til getTrackbarPos(). Gjenta dette trinnet for de tre separate fargekomponentene, blå, grønn og rød. Bruk skiveoperatoren til å tilordne de tre verdiene til bildematrisen. Dette vil erstatte det forrige settet med verdier, først alle nuller, med gjeldende verdier i henhold til sporlinjens posisjoner.
samtidig som (ekte):
cv2.imshow (vindusnavn, bilde)hvis cv2.waitKey(1) == 27:
gå i stykker
blå = cv2.getTrackbarPos('Blå', vindunavn)
grønn = cv2.getTrackbarPos('Grønn', vindunavn)
red = cv2.getTrackbarPos('Rød', vindunavn)
bilde[:] = [blå, grønn, rød]
print (blått, grønt, rødt)
Når brukeren trykker på Escape-tasten, bruk ødelegge Alle Windows() for å lukke vinduene programmet åpnet:
cv2.destroyAllWindows()
Til slutt setter du alt sammen og kjører det for å kontrollere og se fargepaletten din.
Utdataene fra Python Color Palette-programmet
Når du kjører programmet ovenfor, vises et vindu som inneholder tre sporfelter for fargene blå, grønn og rød. Sporlinjene beveger seg fra et område på 0 til 255. Når du varierer verdiene til de forskjellige stolpene, bør du se forskjellige nyanser av farger i avsnittet nedenfor.
I dette første eksemplet kan du se innstillingen for den blå linjen som 0, Grønn som 69 og Rød som 255. Den resulterende utdatafargen er en nyanse av oransje/rød. I tillegg viser terminalvinduet fargeverdiene som 0 69 255.
På samme måte, når du setter den blå linjen som 130, Grønn som 0 og Rød som 75, vil du få en Indigo-farge.
De forskjellige applikasjonene til OpenCV
OpenCV tilbyr verdifulle funksjoner for oppgaver som bildebehandling, objektgjenkjenning, ansiktsgjenkjenning og sporing. Ved å bruke OpenCV kan du produsere datasynsapplikasjoner i sanntid som vil være en velsignelse innen områder som robotikk, industriell automasjon, medisinsk bildebehandling og overvåkingssystemer.
Fremtiden for datasyn er lovende. Du vil kunne bruke datasyn for å hjelpe synshemmede, gi bedre vekst i landbruket, øke trafikksikkerheten ved å bruke selvkjørende biler, og til og med navigere andre planeter, som Mars.