Innholdsfortegnelse:
- Rekvisita
- Trinn 1: Importere biblioteker
- Trinn 2: Opprette sporbarer
- Trinn 3: Opprette TrackBars for fargetone, metning og verdi
- Trinn 4: Hvordan lese og endre størrelse på bilde
- Trinn 5: Lese sporverdier for å bruke det på et bilde
- Trinn 6: Visning av bilde og innstilling av øvre og nedre grense
- Trinn 7: Nå det siste trinnet
- Trinn 8: Siste utganger
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
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
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
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
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
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
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
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
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