INHOUDSOPGAWE:
- Voorrade
- Stap 1: Die invoer van biblioteke
- Stap 2: Maak baanstawe
- Stap 3: skep trackbars vir kleur, versadiging en waarde
- Stap 4: Hoe om die prent te lees en die grootte daarvan te verander
- Stap 5: Lees die waardes van die snitbalk om dit op 'n prent toe te pas
- Stap 6: Vertoon beeld en stel die boonste en onderste perk in
- Stap 7: Nou die laaste stap
- Stap 8: Finale uitsette
2025 Outeur: John Day | [email protected]. Laas verander: 2025-01-13 06:56
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 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
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
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
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
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
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
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