Innholdsfortegnelse:

Fargedeteksjon i Python ved hjelp av OpenCV: 8 trinn
Fargedeteksjon i Python ved hjelp av OpenCV: 8 trinn

Video: Fargedeteksjon i Python ved hjelp av OpenCV: 8 trinn

Video: Fargedeteksjon i Python ved hjelp av OpenCV: 8 trinn
Video: Anil Seth: Nevrovitenskap om bevissthet og selvet 2024, Juli
Anonim
Image
Image

Hallo! Denne instruksen brukes til å veilede hvordan du trekker ut en bestemt farge fra et bilde i python ved hjelp av openCV -bibliotek. Hvis du er ny på denne teknikken, så ikke bekymre deg, på slutten av denne veiledningen vil du kunne programmere ditt eget fargedetekteringsprogram.

Følgende er funksjonene, eller vi kan si teknikker du vil lære, 1. Hvordan lese et bilde

2. Hvordan lage sporbarer

3. Hvordan justere verdien av fargetone, metning og verdien til et bilde ved hjelp av sporelinjer

4. Og så vil det være den siste utgangen din

Du kan se videoen av utgangen som jeg har vedlagt nedenfor.

Så la oss komme i gang

Rekvisita

  • Python 3
  • openCV bibliotek
  • numpy bibliotek

Trinn 1: Importere biblioteker

Importere biblioteker
Importere biblioteker

Bildet er av gul ferrari som vist, og vi skal programmere for å trekke ut bare gul farge fra bildet

Det første trinnet er å importere bibliotekene våre

1. Inkludert openCV -bibliotek. Det kalles cv2 i python

2. Inkludert numpy library som np. "As" tillater oss numpy som np, så du trenger ikke skrive numpy igjen og igjen

Trinn 2: Opprette sporbarer

Opprette sporbarer
Opprette sporbarer

Sporstenger opprettes for å justere verdien av fargetone, metning og verdi i et bilde.

cv2.namedWindow ("TrackBars") Denne kodelinjen brukes til å lage et nytt utgangsvindu og navnet på vinduet er gitt som TrackBars (Du kan gi et hvilket som helst navn du vil)

cv2.resizeWindow ("TrackBars", 600, 250) Denne funksjonen brukes til å endre størrelsen på et vindu. "TrackBars" er for hvilket vindu du vil endre størrelsen siden jeg ønsket å endre størrelsen på TrackBars -vinduet jeg har skrevet det navnet. Etterfulgt av to heltall. De to heltallene er bredden og høyden. Du kan leke med de to tallene for å endre størrelsen

Trinn 3: Opprette TrackBars for fargetone, metning og verdi

Opprette TrackBars for fargetone, metning og verdi
Opprette TrackBars for fargetone, metning og verdi
Opprette TrackBars for fargetone, metning og verdi
Opprette TrackBars for fargetone, metning og verdi

Nå skal vi lage totalt 6 TrackBars for fargetone, metning og verdi. Hver vil ha to dvs. 1 for minimum og 1 for maksimum. Vi bruker createTrackbar -funksjonen til openCV. Først vil vi se syntaksen til denne funksjonen.

cv2.createTrackbar ("WINDOWNAME", "MAINWINDOWNAME", "RANGE"). Dette kan være forvirrende, men ikke bekymre deg, vi går gjennom hvert trinn. Husk en ting at i openCV -verdier av fargetone er 179, metning er 255 og verdi er 255

1. Opprette TrackBar for fargetone min:

cv2.createTrackbar ("Fargetone min", "TrackBars", 0, 179, tom)

I denne fargetone er navnet på sporingslinjen, TrackBars er hovedvinduet, 0 er posisjonen som glidebryteren vil være på og 179 er området som betyr at silderen vil bevege seg fra 0-179

2. Opprette TrackBar for hue max:

cv2.createTrackbar ("Hue max", "TrackBars", 179, 179, tom)

I denne Hue max er sporingsnavnet, TrackBars er hovedvinduet, 179 er posisjonen som glidebryteren vil være på og 179 er det maksimale området som betyr at silderen vil bevege seg fra 179-0

3. Gjenta på samme måte trinnene for lør min, lør maks, val min og val maks som vist på bildet

Bildet med den hvite bakgrunnen er output -bildet. Slik vil sporstangene dine se ut

Trinn 4: Hvordan lese og endre størrelse på bilde

Hvordan lese og endre størrelse på bilde
Hvordan lese og endre størrelse på bilde

cv2.imread () lar deg lese bildet. En viktig tanke du må huske på at plasseringen av bildet ditt må være i den samme mappen der programmet er lagret. Vi legger inn mens loop fordi den skal kjøre til den leser bildet, eller vi kan si til tilstanden er sann

img = cv2.imread ("ferrari.jpg")

  • I dette har jeg laget et variabelnavn "img" der jeg lagrer bildet
  • Inne i cv2.imread skriver du navnet på bildet med utvidelsen inne i dobbelt sitat

For å endre størrelsen på et bilde bruker vi funksjonen cv2.resize. Denne delen er valgfri. Hvis du vil endre størrelsen, kan du bruke denne funksjonen

Inne i cv2.resize skriver du først variabelnavnet som bildet er lagret i, og deretter bredden og høyden

Trinn 5: Lese sporverdier for å bruke det på et bilde

Lese verdier på sporlinjen for å bruke den på et bilde
Lese verdier på sporlinjen for å bruke den på et bilde
Lese verdier på sporlinjen for å bruke den på et bilde
Lese verdier på sporlinjen for å bruke den på et bilde

Ok, så nå skal vi lese verdiene på sporingslinjen, slik at vi kan bruke den på bildet vårt. Vi vil få verdiene ved hjelp av funksjonen cv2.getTrackbarPos ().

La oss starte med den delen …

h_min = cv2.getTrackbarPos ("Fargetone min", "TrackBars")

I uttalelsen ovenfor oppretter jeg et variabelnavn h_min der jeg vil lagre verdien av fargetone min. Så inne i cv2.getTrackbarPos første argument ville være "Fargetone min" fordi jeg vil ha verdier for fargetone min (stavemåten må være nøyaktig den samme som den er createTrackbar -funksjon) og andre argument ville være navnet på sporingsvinduet som den tilhører.

  • Gjenta den samme prosessen for h_max og resten av funksjonene som vist i bildet ovenfor, og skriv deretter ut alle verdiene ved hjelp av print ()
  • Utgangen er vist i det andre bildet. Det skriver ut verdiene h_min, h_max, s_min, s_max, v_min, s_max

Trinn 6: Visning av bilde og innstilling av øvre og nedre grense

Visning av bilde og innstilling av øvre og nedre grense
Visning av bilde og innstilling av øvre og nedre grense

Nå har vi min- og maksverdien for fargetone, metning og verdi. Vi vil bruke denne verdien til å filtrere ut bildet, slik at vi kan få den spesielle fargeutgangen til et bilde.

Vi vil lage en maske for dette ved hjelp av cv2.inRange -funksjonen. Og før det vil vi sette den øvre og nedre grensen for fargetone, metning og verdi

Så opprett et variabelnavn "lavere" og bruk numpy array -funksjonen til å sette rekkevidden til min for alle 3 som følger

lavere = np.array ([h_min, s_min, v_min])

Gjenta samme trinn for øvre

øvre = np.array ([h_max, s_max, v_max])

Nå skal vi lage en maske som følger

mask = cv2.inRange (endre størrelse, nedre, øvre) Inne i cv2.inRang vil det første argumentet være variabelen der det siste bildet mitt er lagret, det andre argumentet vil være nedre grense og det tredje argumentet vil være øvre grense.

Nå skal vi vise hovedbildet og masken. For å vise bruker vi funksjonen cv2.imshow ()

cv2.imshow ("img", endre størrelse) Dette er for å vise hovedbildet. Første argument er navnet på vinduet du kan gi et hvilket som helst navn du vil ha, og det andre argumentet er variabel der hovedbildet mitt er lagret som du vil vise.

Gjenta på samme måte trinnene for maske

cv2.imshow ("Output", maske)

Trinn 7: Nå det siste trinnet

Nå det siste trinnet
Nå det siste trinnet

I dette siste trinnet vil vi trekke ut fargen på bilen og skjermen.

Jeg har laget et variabelnavn. Igjen kan du gi hvilket navn du vil. Så vi bruker funksjonen cv2.bitwise_and () der vi legger til bilder sammen og lager et nytt bilde. Og uansett hvor pikslene i begge bildet er tilstede, vil det ta det som ja eller "1".

resultat = cv2.bitwise_and (endre størrelse, endre størrelse, maske = maske)

  • I dette vil det første argumentet være vårt image
  • Det andre argumentet vil også være vårt originale bilde, men etterfulgt av maske påført som vi opprettet før
  • Og til slutt bare vise resultatet ved hjelp av imshow -funksjonen

Bare kopier lim inn dette siste trinnet, det er bare en forsinkelse, og du kan gå ut av vinduet ved å trykke "a" på tastaturet

Trinn 8: Siste utganger

Anbefalt: