Indholdsfortegnelse:

Farvedetektering i Python ved hjælp af OpenCV: 8 trin
Farvedetektering i Python ved hjælp af OpenCV: 8 trin

Video: Farvedetektering i Python ved hjælp af OpenCV: 8 trin

Video: Farvedetektering i Python ved hjælp af OpenCV: 8 trin
Video: Сериал - "Сваты" (1-й сезон 1-я серия) фильм комедия для всей семьи 2024, Juli
Anonim
Image
Image

Hej! Denne instruerbare bruges til at guide til, hvordan man udtrækker en bestemt farve fra et billede i python ved hjælp af openCV -bibliotek. Hvis du ikke er ny inden for denne teknik, skal du ikke bekymre dig, i slutningen af denne vejledning vil du være i stand til at programmere dit helt eget farvedetekteringsprogram.

Følgende er funktionerne, eller vi kan sige teknikker, som du vil lære, 1. Sådan læses et billede

2. Sådan opretter du sporstænger

3. Sådan justeres værdien af nuance, mætning og værdien af et billede ved hjælp af sporlinjer

4. Og så vil der være dit endelige output

Du kan se videoen af output, som jeg har vedhæftet nedenfor.

Så lad os komme i gang

Forbrugsvarer

  • Python 3
  • openCV bibliotek
  • numpy bibliotek

Trin 1: Import af biblioteker

Import af biblioteker
Import af biblioteker

Billedet er af gul ferrari som vist, og vi programmerer kun at udtrække gul farve fra dette billede

Første trin er import af vores biblioteker

1. Inklusive openCV -bibliotek. Det kaldes cv2 i python

2. Inklusiv numpy bibliotek som np. "As" giver os mulighed for at føle os som np, så det er ikke nødvendigt at skrive numpy igen og igen

Trin 2: Oprettelse af sporstænger

Oprettelse af sporstænger
Oprettelse af sporstænger

Sporstænger oprettes for at justere værdien af nuance, mætning og værdi i et billede.

cv2.namedWindow ("TrackBars") Denne kodelinje bruges til at oprette et nyt outputvindue, og navnet på vinduet angives som TrackBars (Du kan give et hvilket som helst navn, du ønsker)

cv2.resizeWindow ("TrackBars", 600, 250) Denne funktion bruges til at ændre størrelsen på et vindue. "TrackBars" er for hvilket vindue du vil ændre størrelsen, da jeg ønskede at ændre størrelsen på TrackBars -vinduet, jeg har skrevet det navn. Efterfulgt af to heltal. Disse to heltal er bredden og højden. Du kan lege med de to tal for at ændre størrelsen

Trin 3: Oprettelse af TrackBars til farvetone, mætning og værdi

Oprettelse af TrackBars til farvetone, mætning og værdi
Oprettelse af TrackBars til farvetone, mætning og værdi
Oprettelse af TrackBars til farvetone, mætning og værdi
Oprettelse af TrackBars til farvetone, mætning og værdi

Nu opretter vi i alt 6 TrackBars til farvetone, mætning og værdi. Hver vil have to, dvs. 1 for minimum og 1 for maksimum. Vi vil bruge createTrackbar -funktionen til openCV. Først vil vi se syntaksen for denne funktion.

cv2.createTrackbar ("WINDOWNAME", "MAINWINDOWNAME", "RANGE"). Dette kan være forvirrende, men bare rolig, vi går igennem hvert eneste trin. Husk én ting, at i openCV -værdier for nuance er 179, mætning er 255 og værdi er 255

1. Oprettelse af TrackBar til farvetone min:

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

I denne Hue min er trackbarnavnet, TrackBars er hovedvinduet, 0 er den position, som vores skyder vil være på, og 179 er intervallet, hvilket betyder, at silderet bevæger sig fra 0-179

2. Oprettelse af TrackBar til hue max:

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

I denne Hue max er trackbarnavnet, TrackBars er hovedvinduet, 179 er den position, som vores skyder vil være på, og 179 er det maksimale område, hvilket betyder, at silderet bevæger sig fra 179-0

3. Gentag på samme måde trinene for sat min, sat max, val min og val max som vist på billedet

Billedet med den hvide baggrund er outputbilledet. Sådan vil dine sporstænger se ud

Trin 4: Sådan læses og ændres størrelse på billede

Sådan læses og ændres størrelse på billede
Sådan læses og ændres størrelse på billede

cv2.imread () giver dig mulighed for at læse billedet. En vigtig tanke, du skal huske på, at placeringen af dit billede skal være i den samme mappe, hvor programmet er gemt. Vi indsætter mens loop, fordi det skal køre, indtil det er ved at læse billedet, eller vi kan sige, indtil betingelsen er sand

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

  • I dette har jeg oprettet et variabelnavn "img", hvor jeg gemmer billedet
  • Inde cv2.imread skrive navnet på billedet med dets udvidelse inde i dobbelt citat

For at ændre størrelsen på et billede bruger vi funktionen cv2.resize. Denne del er valgfri, hvis du vil ændre størrelsen, kan du bruge denne funktion

Inde i cv2.resize skal du først skrive det variabelnavn, som billedet er gemt i, og derefter dets bredde og højde

Trin 5: Læsning af sporværdier for at anvende det på et billede

Læsning af sporlinjeværdier for at anvende det på et billede
Læsning af sporlinjeværdier for at anvende det på et billede
Læsning af sporlinjeværdier for at anvende det på et billede
Læsning af sporlinjeværdier for at anvende det på et billede

Ok, så nu kommer vi til at læse trackbar -værdier, så vi kan anvende det på vores billede. Vi får værdierne ved hjælp af funktionen cv2.getTrackbarPos ().

Lad os starte med den del …

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

I ovenstående erklæring opretter jeg et variabelnavn h_min, hvor jeg vil gemme værdien af Hue min. Så inde i cv2.getTrackbarPos 1. argument ville være "Hue min", fordi jeg vil have værdier for hue min (stavningen skal være nøjagtig den samme som den er createTrackbar funktion) og 2. argument ville være navnet på det trackbar vindue, den tilhører.

  • Gentag den samme proces for h_max og resten af funktionerne som vist på billedet ovenfor, og udskriv derefter alle værdierne ved hjælp af print ()
  • Outputtet vises på det andet billede. Det udskriver værdierne for h_min, h_max, s_min, s_max, v_min, s_max

Trin 6: Visning af billede og indstilling af øvre og nedre grænse

Visning af billede og indstilling af øvre og nedre grænse
Visning af billede og indstilling af øvre og nedre grænse

Nu har vi min og max værdien for nuance, mætning og værdi, vi vil bruge denne værdi til at filtrere billedet ud, så vi kan få et bestemt farveoutput af et billede.

Vi opretter en maske til dette ved hjælp af cv2.inRange -funktionen. Og før det vil vi sætte den øvre og nedre grænse for nuance, mætning og værdi

Så opret et variabelnavn "lavere", og brug numpy array -funktion til at indstille intervallet for min for alle 3 som følger

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

Gentag samme trin for øvre

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

Nu opretter vi en maske som følger

mask = cv2.inRange (størrelse, lavere, øvre) Inde i cv2.inRang ville det første argument være variablen, hvor mit sidste billede er gemt, 2. argument vil være nedre grænse og 3. argument ville være øvre grænse.

Nu skal vi vise hovedbilledet og masken. For at vise vil vi bruge funktionen cv2.imshow ()

cv2.imshow ("img", tilpas størrelse) Dette er for at vise hovedbilledet. 1. argument er navnet på vinduet, du kan give et hvilket som helst navn, du vil have, og 2. argument er variabel, hvor mit hovedbillede er gemt, som du vil vise.

Gentag på samme måde trinene for maske

cv2.imshow ("Output", maske)

Trin 7: Nu det sidste trin

Nu det sidste trin
Nu det sidste trin

I dette sidste trin vil vi udtrække bilens farve og display.

Jeg har oprettet et variabelnavn resultat. Igen kan du give ethvert navn, du ønsker. Så vi vil bruge funktionen cv2.bitwise_and (), hvor vi sammen vil tilføje billeder og oprette et nyt billede. Og uanset hvor pixel i begge billeder er til stede, vil det tage det som ja eller "1".

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

  • I dette vil det første argument være vores image
  • 2. argument vil også være vores originale billede, men efterfulgt af påført maske, som vi skabte før
  • Og endelig bare vise resultatet ved hjælp af imshow -funktionen

Kopier bare indsæt dette sidste trin, det er bare en forsinkelse, og du kan afslutte outputvinduet ved at trykke på "a" på tastaturet

Trin 8: Endelige output

Anbefalede: