INHOUDSOPGAWE:

Kleuropsporing in Python met behulp van OpenCV: 8 stappe
Kleuropsporing in Python met behulp van OpenCV: 8 stappe

Video: Kleuropsporing in Python met behulp van OpenCV: 8 stappe

Video: Kleuropsporing in Python met behulp van OpenCV: 8 stappe
Video: Exploratory Data Analysis & Modeling with Python + R - (Part II - Mixed Effects Modeling with R) 2024, Julie
Anonim
Image
Image

Hallo! Hierdie instruksies word gebruik om te leer hoe u 'n spesifieke kleur uit 'n beeld in python kan onttrek met behulp van openCV -biblioteek. As u nie hierdie tegniek is nie, moenie bekommerd wees nie; aan die einde van hierdie gids kan u u eie kleuropsporingsprogram programmeer.

Hier volg die funksies, of ons kan tegnieke sê wat u gaan leer, 1. Hoe om 'n prent te lees

2. Hoe om baanstawe te skep

3. Hoe om die waarde van kleur, versadiging en waarde van 'n beeld aan te pas met behulp van spoorstawe

4. En dan sal daar jou finale uitset wees

U kan die video sien van die uitset wat ek hieronder aangeheg het.

So laat ons begin

Voorrade

  • Python 3
  • openCV biblioteek
  • lomp biblioteek

Stap 1: Die invoer van biblioteke

Die invoer van biblioteke
Die invoer van biblioteke

Die beeld is van geel ferrari soos getoon, en ons sal programmeer om slegs geel kleur uit die prentjie te onttrek

Die eerste stap is die invoer van ons biblioteke

1. Insluitend openCV -biblioteek. Dit word in python cv2 genoem

2. Insluitend numpy biblioteek as np. Die "as" stel ons in staat om numpy as np te wees, dus is dit nie nodig om telkens numpy te skryf nie

Stap 2: Maak baanstawe

Skep baanstawe
Skep baanstawe

Spoorstawe word gemaak om die waarde van kleur, versadiging en waarde in 'n prent aan te pas.

cv2.namedWindow ("TrackBars") Hierdie reël kode word gebruik om 'n nuwe uitvoervenster te skep en die naam van die venster word as TrackBars gegee (u kan enige naam gee wat u wil)

cv2.resizeWindow ("TrackBars", 600, 250) Hierdie funksie word gebruik om die grootte van 'n venster te verander. "TrackBars" is vir watter venster u die grootte wil verander, aangesien ek die TrackBars -venster wou verander, het ek die naam geskryf. Gevolg deur twee heelgetalle. Die twee heelgetalle is die breedte en hoogte. U kan met die twee getalle speel om die grootte te verander

Stap 3: skep trackbars vir kleur, versadiging en waarde

Skep trackbars vir kleur, versadiging en waarde
Skep trackbars vir kleur, versadiging en waarde
Skep trackbars vir kleur, versadiging en waarde
Skep trackbars vir kleur, versadiging en waarde

Nou skep ons altesaam 6 TrackBars vir kleur, versadiging en waarde. Elkeen het twee, dit wil sê 1 vir minimum en 1 vir maksimum. Ons gebruik die createTrackbar -funksie van openCV. Eerstens sien ons die sintaksis van hierdie funksie.

cv2.createTrackbar ("WINDOWNAME", "MAINWINDOWNAME", "RANGE"). Dit kan verwarrend wees, maar moenie bekommerd wees nie, ons gaan elke stap deur. Hou een ding in gedagte dat in openCV -waardes van tint 179, versadiging 255 en waarde 255 is

1. Skep TrackBar vir kleure min:

cv2.createTrackbar ("Hue min", "TrackBars", 0, 179, leeg)

In hierdie Hue min is die naam van die trackbar, TrackBars is die hoofvenster, 0 is die posisie waarop ons glyer sal wees en 179 is die reeks wat beteken dat die silder van 0-179 sal beweeg

2. Maak TrackBar vir maksimum kleur:

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

In hierdie Hue max is die naam van die spoorbalk, TrackBars is die hoofvenster, 179 is die posisie waarop ons skuifbalk sal wees en 179 is die maksimum bereik wat beteken dat die silder van 179-0 beweeg

3. Herhaal die stappe op dieselfde manier vir sat min, sat max, val min en val max soos in die prent getoon

Die beeld met die wit agtergrond is die uitvoerbeeld. So sal jou snitstawe lyk

Stap 4: Hoe om die prent te lees en die grootte daarvan te verander

Hoe om die prent te lees en die grootte daarvan te verander
Hoe om die prent te lees en die grootte daarvan te verander

Met cv2.imread () kan u die prent lees. Een belangrike gedagte wat u moet onthou, moet die plek van u prent in dieselfde gids wees waar die program gestoor is. Ons sal 'n lus inbring, want dit moet loop totdat die prent gelees word, of ons kan sê totdat die toestand waar is

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

  • Hierin het ek 'n veranderlike naam "img" geskep waarin ek die prent stoor
  • Binne cv2.imread skryf die naam van die prentjie met die uitbreiding binne die dubbele aanhaling

Om die grootte van 'n beeld te verander, gebruik ons die funksie cv2.resize. Hierdie deel is opsioneel, as u die grootte wil verander, kan u hierdie funksie gebruik

Binne cv2.resize skryf eers die veranderlike naam waarin die prent gestoor word, dan die breedte en hoogte daarvan

Stap 5: Lees die waardes van die snitbalk om dit op 'n prent toe te pas

Die lees van spoorbalkwaardes om dit op 'n prent toe te pas
Die lees van spoorbalkwaardes om dit op 'n prent toe te pas
Die lees van spoorbalkwaardes om dit op 'n prent toe te pas
Die lees van spoorbalkwaardes om dit op 'n prent toe te pas

Ok, nou gaan ons die spoorbalkwaardes lees, sodat ons dit op ons beeld kan toepas. Ons kry die waardes met die funksie cv2.getTrackbarPos ().

Kom ons begin met die deel …

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

In die bostaande stelling skep ek 'n veranderlike naam h_min waarin ek die waarde van Hue min sal stoor. So binne cv2.getTrackbarPos se eerste argument sou 'Hue min' wees, want ek wil waardes van hue min hê (die spelling moet presies dieselfde wees as die createTrackbar -funksie) en die tweede argument sou die naam wees van die trackbar -venster waartoe dit behoort.

  • Herhaal dieselfde proses vir h_max en die res van die funksies soos in die prent hierbo getoon en druk dan al die waardes uit met print ()
  • Die uitset word in die tweede prent getoon. Dit druk die waardes van h_min, h_max, s_min, s_max, v_min, s_max

Stap 6: Vertoon beeld en stel die boonste en onderste perk in

Vertoon beeld en stel die boonste en onderste perk in
Vertoon beeld en stel die boonste en onderste perk in

Nou het ons die min en maksimum waarde van kleur, versadiging en waarde, en ons sal hierdie waarde gebruik om die prent uit te filter sodat ons die spesifieke kleuruitset van 'n beeld kan kry.

Ons sal 'n masker hiervoor skep met behulp van cv2.inRange -funksie. En voor dit stel ons die boonste en onderste grens van kleur, versadiging en waarde vas

Skep dus 'n veranderlike naam "laer" en stel die reeks min vir al 3 soos volg met behulp van numpy array -funksie

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

Herhaal dieselfde stap vir die boonste gedeelte

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

Nou sal ons 'n masker soos volg maak

mask = cv2.inRange (grootte verander, laer, boonste) Binne cv2.inRang sou die 1ste argument die veranderlike wees waarin my finale beeld gestoor word, 2de argument sal die onderste limiet en die derde argument die boonste limiet wees.

Nou gaan ons die hoofbeeld en masker vertoon. Om dit te vertoon, gebruik ons die funksie cv2.imshow ()

cv2.imshow ("img", grootte verander) Dit is om die hoofbeeld te vertoon. 1ste argument is die naam van die venster wat u kan gee, en die tweede argument is veranderlike waarin my hoofbeeld gestoor word wat u wil vertoon.

Herhaal die stappe op dieselfde manier vir die masker

cv2.imshow ("Output", masker)

Stap 7: Nou die laaste stap

Nou die laaste stap
Nou die laaste stap

In hierdie laaste stap haal ons die kleur van die motor en die skerm uit.

Ek het 'n veranderlike naam resultaat gemaak. U kan weer enige naam gee wat u wil. Ons gebruik dus die funksie cv2.bitwise_and () waarin ons saam aan beelde sal toevoeg en 'n nuwe beeld kan skep. En waar die pixels in albei die prentjies teenwoordig is, sal dit ja of "1" wees.

resultaat = cv2.bitwise_and (grootte, grootte, masker = masker verander)

  • Hierin is die eerste argument ons beeld
  • Die tweede argument sal ook ons oorspronklike beeld wees, maar gevolg deur 'n masker wat ons voorheen geskep het
  • En laastens die resultaat met die imshow -funksie vertoon

Kopieer en plak hierdie laaste stap; dit is net 'n vertraging, en u kan die uitvoervenster verlaat deur op 'a' op die sleutelbord te druk

Stap 8: Finale uitsette

Aanbeveel: