Innholdsfortegnelse:
- Trinn 1: Toppfilene
- Trinn 2: Ta opp videoen
- Trinn 3: Ta bilde og definere farge
- Trinn 4: Maskering og ekstraksjon
- Trinn 5: Endelig vises
- Trinn 6: Demo
Video: Enkel fargedeteksjon ved bruk av OpenCV: 6 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:21
Hei! I dag skal jeg vise en enkel metode for å oppdage en farge fra en live video ved hjelp av OpenCV og python.
I utgangspunktet vil jeg bare teste den nødvendige fargen som er tilstede i bakgrunnsrammen eller ikke, og ved å bruke OpenCV -moduler vil jeg maskere regionen og samtidig vise rammen.
Trinn 1: Toppfilene
Nå her har jeg brukt to topptekster, nemlig cv2 og NumPy. I utgangspunktet er cv2 OpenCV -biblioteket som laster alle c ++ - filene som er viktige mens du bruker kommandoene i kodene (den inneholder alle definisjonene).
Og Numpy er et python -bibliotek som er avgjørende for lagring av en flerdimensjonal matrise. Vi skal bruke til å lagre våre fargespekterskoordinater.
Og numpy as np hjelper i utgangspunktet koden vår med å forkorte litt ved å bruke np hver gang i stedet for numpy.
Trinn 2: Ta opp videoen
Dette er ganske enkelt mens du bruker python. Her trenger vi bare å slå på videoopptaker slik at den kan begynne å spille inn bildene.
Nå indikerer verdien inne i VideoCapture kameraet, i mitt tilfelle er kameraet koblet til den bærbare datamaskinen min, så 0.
Du kan gå på samme måte som 1 for det sekundære kameraet og så videre. VideoCapture lager objektet for det.
Trinn 3: Ta bilde og definere farge
Nå må vi gjøre noe slik at vi kan fange øyeblikksrammen til videoen som vil hjelpe oss med å trekke ut bildet, og vi kan jobbe med det i henhold til kravet.
"while" -løkke vil hjelpe oss med å kjøre løkken til vår kravtid. Nå brukes "_, frame = cap.read ()" for å kontrollere gyldigheten av rammen som er fanget og lagre den. "cap.read () er en boolsk variabel og returnerer true hvis rammen blir lest riktig, og hvis du ikke får noen rammer vil det ikke vise noen feil, du vil ganske enkelt få None.
Nå definerer linje 11 og linje 12 i utgangspunktet fargeområdet vi trenger å oppdage. For dette har jeg brukt til blå farge.
Du kan fortsette med hvilken som helst farge for det du bare trenger å skrive inn BGR -verdier for den aktuelle fargen. Det er bedre å definere to matriser ved hjelp av numpy -arrays, ettersom detektering av en bestemt farge i den virkelige verden ikke vil tjene vårt formål, snarere vil vi definere et område med blå farger slik at den oppdager innenfor området.
For dette har jeg definert to variabler som lagrer de nedre BGR -verdiene og de øvre BGR -verdiene.
Trinn 4: Maskering og ekstraksjon
Nå kommer hovedoppgaven med å maskere rammen og trekke ut fargen på rammen. Jeg brukte de forhåndsdefinerte kommandoene som er tilstede i biblioteket i OpenCV for å gjøre maskeringen. I utgangspunktet er maskering prosessen med å fjerne en del av rammen, det vil si at vi vil fjerne pikslene hvis farge BGR -verdier som ikke ligger i det definerte fargeområdet, og dette gjøres av cv2.inRange. Etterpå bruker vi fargeområdet på det maskerte bildet avhengig av pikselverdiene, og for dette vil vi bruke cv2.bitwise_and, Det vil ganske enkelt tildele fargene til det maskerte området avhengig av maske- og fargeområdet.
Lenke til cv2. bitwise_and:
Trinn 5: Endelig vises
Her har jeg brukt den grunnleggende cv2.imshow () for å vise hver ramme som et bilde. Siden jeg har rammedata lagret i variabler, kan jeg hente dem i imshow (). Her har jeg vist alle de tre bildene, originale, maskerte og fargede.
Nå må vi gå ut av mens -sløyfen. For dette kan vi ganske enkelt implementere cv2.wait. Key (). I utgangspunktet forteller det ventetiden før du svarer. Så hvis du passerer 0, venter det uendelig og 0xFF forteller at arkitekturen er 64bit. "ord ()" angir tegnet som når det trykkes vil utføre pause -kommandoen i hvis blokk og det vil komme ut av løkken.
Deretter lukker cap.release () videoopptakeren og cv2.destroyAllWindows () lukker alle åpnede vinduer.
Gi meg beskjed hvis du har problemer.
Lenke til kildekoden:
Anbefalt:
Enkel 20 LED Vu -meter ved bruk av LM3915: 6 trinn
Enkel 20 LED Vu -meter Bruke LM3915: Ideen om å lage en VU -måler har vært på prosjektlisten min lenge. Og endelig kan jeg klare det nå. VU -måleren er en krets for en indikator på lydsignalstyrken. VU -meterkretsen brukes vanligvis på en forsterkerkrets, slik at
Enkel frekvensteller ved bruk av Arduino: 6 trinn
Enkel frekvensmåler ved bruk av Arduino: I denne opplæringen lærer vi hvordan du lager en enkel frekvensmåler ved hjelp av Arduino. Se videoen
Fargedeteksjon Malemaskin: 4 trinn
Color Detection Paint Machine: Fargedeteksjonsmaling maskin kopier farger rundt deg og lar deg tegne med dem. Hvis du har malingen av hovedfarger, kan du bruke RGB -fargesensoren til å ane fargen du vil ha og blande den ut. Men husk, bruk objektet med lyse farger
Fargedeteksjon i Python ved hjelp av OpenCV: 8 trinn
Fargedeteksjon i Python ved hjelp av OpenCV: Hei! Denne instruksen brukes til å veilede hvordan du trekker ut en bestemt farge fra et bilde i python ved hjelp av openCV -bibliotek. Hvis du ikke er helt ny på denne teknikken, så ikke fortvil, på slutten av denne guiden vil du kunne programmere din helt egen farge
Fargedeteksjon ved bruk av RGB LED: 4 trinn
Fargedeteksjon ved bruk av RGB LED: Har du noen gang ønsket en automatisk måte å oppdage fargen på et objekt? Ved å skinne lys av en bestemt farge på objektet og se på hvor mye lys som reflekteres tilbake, kan du fortelle hvilken farge objektet har. For eksempel, hvis du lyser rødt lys