Innehållsförteckning:

Färgdetektering i Python med OpenCV: 8 steg
Färgdetektering i Python med OpenCV: 8 steg

Video: Färgdetektering i Python med OpenCV: 8 steg

Video: Färgdetektering i Python med OpenCV: 8 steg
Video: Anil Seth: Neurovetenskap om medvetande och jag 2024, November
Anonim
Image
Image

Hej! Denna instruerbara används för att vägleda med hur man extraherar en specifik färg från en bild i python med hjälp av openCV -bibliotek. Om du är ny på denna teknik, oroa dig inte, i slutet av den här guiden kommer du att kunna programmera ditt eget färgdetekteringsprogram.

Följande är funktionerna eller vi kan säga tekniker som du kommer att lära dig, 1. Hur man läser en bild

2. Hur man skapar spårbarer

3. Hur man justerar värdet för nyans, mättnad och värde för en bild med hjälp av spårfält

4. Och sedan kommer det att bli din slutliga produktion

Du kan titta på videon av utgången som jag har bifogat nedan.

Så låt oss komma igång

Tillbehör

  • Python 3
  • openCV -bibliotek
  • numpy bibliotek

Steg 1: Importera bibliotek

Importera bibliotek
Importera bibliotek

Bilden är av gul ferrari som visas och vi kommer att programmera att extrahera endast gul färg från den bilden

Första steget är att importera våra bibliotek

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

2. Inklusive numpy bibliotek som np. "As" tillåter oss att vi numpy som np så behöver inte skriva numpy om och om igen

Steg 2: Skapa spårfält

Skapa spårfält
Skapa spårfält

Spårfält skapas för att justera värdet för nyans, mättnad och värde i en bild.

cv2.namedWindow ("TrackBars") Denna kodrad används för att skapa ett nytt utmatningsfönster och fönstrets namn anges som TrackBars (Du kan ge valfritt namn)

cv2.resizeWindow ("TrackBars", 600, 250) Denna funktion används för att ändra storlek på ett fönster. "TrackBars" är för vilket fönster du vill ändra storlek eftersom jag ville ändra storlek på TrackBars -fönstret Jag har skrivit det namnet. Följt av två heltal. Dessa två heltal är bredden och höjden. Du kan leka med dessa två nummer för att ändra storlek

Steg 3: Skapa TrackBars för nyans, mättnad och värde

Skapa TrackBars för nyans, mättnad och värde
Skapa TrackBars för nyans, mättnad och värde
Skapa TrackBars för nyans, mättnad och värde
Skapa TrackBars för nyans, mättnad och värde

Nu kommer vi att skapa totalt 6 TrackBars för nyans, mättnad och värde. Var och en kommer att ha två dvs 1 för minimum och 1 för max. Vi kommer att använda createTrackbar -funktionen i openCV. Först kommer vi att se syntaxen för denna funktion.

cv2.createTrackbar ("WINDOWNAME", "MAINWINDOWNAME", "RANGE"). Detta kan vara förvirrande men oroa dig inte, vi kommer att gå igenom varje steg. Tänk på att i openCV -värden för nyans är 179, mättnad är 255 och värdet är 255

1. Skapa TrackBar för färgton min:

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

I denna Hue min är spårfältets namn, TrackBars är huvudfönstret, 0 är positionen som vår skjutreglage kommer att vara på och 179 är intervallet betyder att sildern kommer att röra sig från 0-179

2. Skapa TrackBar för nyans max:

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

I denna Hue max är spårfältets namn, TrackBars är huvudfönstret, 179 är positionen som vår reglage kommer att vara på och 179 är det maximala intervallet vilket betyder att sildern kommer att flytta från 179-0

3. Upprepa på samma sätt stegen för lörmin, lör max, val min och val max som visas på bilden

Bilden med den vita bakgrunden är utdatabilden. Så här kommer dina spårfält att se ut

Steg 4: Hur man läser och ändrar storlek på bild

Hur man läser och ändrar storlek på bild
Hur man läser och ändrar storlek på bild

cv2.imread () låter dig läsa bilden. En viktig tanke du måste komma ihåg att platsen för din bild måste vara i samma mapp där programmet sparas. Vi lägger in medan loop eftersom den ska köras tills den läser bilden eller så kan vi säga tills villkoret är sant

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

  • I detta har jag skapat ett variabelnamn "img" där jag lagrar bilden
  • Inuti cv2.imread skriver du namnet på bilden med tillägget inuti dubbel citat

För att ändra storlek på en bild använder vi funktionen cv2.resize. Denna del är valfri, om du vill ändra storlek kan du använda den här funktionen

Inuti cv2.resize skriver du först variabelnamnet som bilden lagras i och sedan dess bredd och höjd

Steg 5: Läsa spårfältvärden för att tillämpa det på en bild

Läsa spårfältvärden för att tillämpa det på en bild
Läsa spårfältvärden för att tillämpa det på en bild
Läsa spårfältvärden för att tillämpa det på en bild
Läsa spårfältvärden för att tillämpa det på en bild

Ok, så nu ska vi läsa värden på spårfältet så att vi kan tillämpa det på vår bild. Vi får värdena med funktionen cv2.getTrackbarPos ().

Låt oss börja med den delen …

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

I ovanstående uttalande skapar jag ett variabelnamn h_min där jag kommer att lagra värdet på Nyans min. Så inuti cv2.getTrackbarPos 1: a argumentet skulle vara "Hue min" eftersom jag vill ha värden på hue min (stavningen måste vara exakt densamma som den är createTrackbar -funktionen) och andra argumentet skulle vara namnet på det spårfält som det tillhör.

  • Upprepa samma process för h_max och resten av funktionerna som visas i bilden ovan och skriv sedan ut alla värden med print ()
  • Utmatningen visas i den andra bilden. Det skriver ut värdena för h_min, h_max, s_min, s_max, v_min, s_max

Steg 6: Visa bild och ställa in övre och nedre gräns

Visa bild och ställa in övre och nedre gräns
Visa bild och ställa in övre och nedre gräns

Nu har vi min- och maxvärdet för nyans, mättnad och värde. Vi kommer att använda det här värdet för att filtrera bort bilden så att vi kan få en bilds specifika färgutmatning.

Vi kommer att skapa en mask för detta med funktionen cv2.inRange. Och innan det kommer vi att sätta den övre och nedre gränsen för nyans, mättnad och värde

Så skapa ett variabelnamn "lägre" och använd numpy array -funktionen för att ställa in intervallet för min för alla tre enligt följande

lägre = np.array ([h_min, s_min, v_min])

Upprepa samma steg för övre

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

Nu kommer vi att skapa en mask enligt följande

mask = cv2.inRange (ändra storlek, nedre, övre) Inuti cv2.inRang skulle det första argumentet vara variabeln där min sista bild lagras, 2: a argumentet kommer att vara nedre gräns och det tredje argumentet skulle vara övre gräns.

Nu ska vi visa huvudbilden och masken. För att visa använder vi funktionen cv2.imshow ()

cv2.imshow ("img", ändra storlek) Detta är för att visa huvudbilden. 1: a argumentet är namnet på fönstret du kan ge vilket namn du vill och andra argumentet är variabel där min huvudbild är lagrad som du vill visa.

Upprepa på samma sätt steg för mask

cv2.imshow ("Output", mask)

Steg 7: Nu det sista steget

Nu det sista steget
Nu det sista steget

I det sista steget kommer vi att extrahera färgen på bilen och displayen.

Jag har skapat ett variabelnamnresultat. Återigen kan du ge vilket namn du vill. Så vi kommer att använda funktionen cv2.bitwise_and () där vi tillsammans lägger till bilder och skapar en ny bild. Och varhelst pixlarna i båda bilderna finns kommer det att ta det som ja eller "1".

resultat = cv2.bitwise_and (ändra storlek, ändra storlek, mask = mask)

  • I detta kommer det första argumentet att vara vår bild
  • 2: a argumentet kommer också att vara vår ursprungliga bild men följt av mask applicerad som vi skapade tidigare
  • Och slutligen bara visa resultatet med imshow -funktionen

Kopiera bara klistra in det här sista steget, det är bara en fördröjning och du kan lämna utmatningsfönstret genom att trycka på "a" på tangentbordet

Steg 8: Slututgångar

Rekommenderad: