Kazalo:

Odkrivanje barv v Pythonu z uporabo OpenCV: 8 korakov
Odkrivanje barv v Pythonu z uporabo OpenCV: 8 korakov

Video: Odkrivanje barv v Pythonu z uporabo OpenCV: 8 korakov

Video: Odkrivanje barv v Pythonu z uporabo OpenCV: 8 korakov
Video: Leap Motion SDK 2024, November
Anonim
Image
Image

Zdravo! To navodilo se uporablja za navodila, kako izvleči določeno barvo iz slike v pythonu z uporabo knjižnice openCV. Če ste novi v tej tehniki, potem ne skrbite, na koncu tega priročnika boste lahko programirali svoj lasten program za zaznavanje barv.

Sledijo funkcije ali lahko rečemo tehnike, ki se jih boste naučili, 1. Kako prebrati sliko

2. Kako ustvariti sledi

3. Kako prilagoditi vrednost Hue, Saturation in vrednost slike s pomočjo vrstic za sledenje

4. In potem bo vaš končni rezultat

Spodaj si lahko ogledate videoposnetek izhoda.

Pa začnimo

Zaloge

  • Python 3
  • knjižnica openCV
  • knjižnica numpy

1. korak: Uvoz knjižnic

Uvoz knjižnic
Uvoz knjižnic

Slika je rumenega ferrarija, kot je prikazano, in programirali bomo, da iz te slike izvlečemo samo rumeno barvo

Prvi korak bo uvoz naših knjižnic

1. Vključno s knjižnico openCV. V pythonu se imenuje cv2

2. Vključno z numpy knjižnico kot np. "As" nam omogoča, da numpy kot np, zato ni treba vedno znova pisati numpy

2. korak: Ustvarjanje sledi

Ustvarjanje tirnic
Ustvarjanje tirnic

Vrstice sledi so ustvarjene za prilagajanje vrednosti Hue, Saturation in Value na sliki.

cv2. namedWindow ("TrackBars") Ta vrstica kode se uporablja za ustvarjanje novega izhodnega okna, ime okna pa je podano kot TrackBars (poljubno ime lahko daste)

cv2.resizeWindow ("TrackBars", 600, 250) Ta funkcija se uporablja za spreminjanje velikosti okna. "TrackBars" je okno, za katerega želite spremeniti velikost, ker sem želel spremeniti velikost okna TrackBars. To ime sem napisal. Sledita dve celi števili. Ti dve celi številki sta širina in višina. Če želite spremeniti velikost, se lahko igrate s tema dvema številkama

3. korak: Ustvarjanje sledilnih trakov za odtenek, nasičenost in vrednost

Ustvarjanje sledilnih trakov za odtenek, nasičenost in vrednost
Ustvarjanje sledilnih trakov za odtenek, nasičenost in vrednost
Ustvarjanje sledilnih trakov za odtenek, nasičenost in vrednost
Ustvarjanje sledilnih trakov za odtenek, nasičenost in vrednost

Zdaj bomo ustvarili skupaj 6 sledilnih trakov za Hue, Saturation in value. Vsak bo imel dva, to je 1 za najmanj in 1 za največ. Uporabljali bomo funkcijo createTrackbar za openCV. Najprej bomo videli sintakso te funkcije.

cv2.createTrackbar ("WINDOWNAME", "MAINWINDOWNAME", "RANGE"). To je lahko zmedeno, vendar ne skrbite, da bomo šli skozi vsak korak. Imejte v mislih eno, da so vrednosti odprtega tona v odtenku 179, nasičenosti 255 in vrednosti 255.

1. Ustvarjanje sledilne vrstice za min. Nians:

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

V tem Hue min je ime sledilne vrstice, TrackBars je glavno okno, 0 je položaj, na katerem bo naš drsnik, in 179 je obseg, ki pomeni, da se bo pomak pomaknil od 0-179

2. Ustvarjanje TrackBar za hue max:

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

V tem Hue max je ime sledilne vrstice, TrackBars je glavno okno, 179 je položaj, na katerem bo naš drsnik, in 179 največji razpon pomeni, da se bo pomak premaknil s 179-0

3. Podobno ponovite korake za sat min, sat max, val min in val max, kot je prikazano na sliki

Slika z belim ozadjem je izhodna slika. Tako bodo videti tirnice

4. korak: Kako prebrati in spremeniti velikost slike

Kako prebrati in spremeniti velikost slike
Kako prebrati in spremeniti velikost slike

cv2.imread () vam omogoča branje slike. Ne pozabite, da mora biti lokacija vaše slike v isti mapi, kjer je shranjen program. Vstavili bomo zanko while, ker bi morala delovati, dokler slika ne bere, ali pa rečemo, dokler pogoj ni res

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

  • V tem sem ustvaril spremenljivo ime "img", v katerem shranjujem sliko
  • Znotraj cv2.imread napišite ime slike s končnico v dvojnih narekovajih

Za spreminjanje velikosti slike bomo uporabili funkcijo cv2.resize. Ta del je neobvezen, če želite spremeniti velikost, lahko uporabite to funkcijo

Znotraj cv2.resize najprej napišite ime spremenljivke, v kateri je slika shranjena, nato pa njeno širino in višino

5. korak: Branje vrednosti vrstice sledi za njeno uporabo na sliki

Branje vrednosti vrstice sledi za njeno uporabo na sliki
Branje vrednosti vrstice sledi za njeno uporabo na sliki
Branje vrednosti vrstice sledi za njeno uporabo na sliki
Branje vrednosti vrstice sledi za njeno uporabo na sliki

V redu, zdaj bomo prebrali vrednosti vrstice sledilne vrstice, da jo lahko uporabimo za svojo podobo. Vrednosti bomo dobili s funkcijo cv2.getTrackbarPos ().

Začnimo s tem delom…

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

V zgornji izjavi ustvarjam ime spremenljivke h_min, v katero bom shranil vrednost Hue min. Tako bi bil znotraj cv2.getTrackbarPos prvi argument "Hue min", ker želim vrednosti hue min (črkovanje mora biti popolnoma enako, kot je funkcija createTrackbar), drugi argument pa ime okna sledilne vrstice, ki mu pripada.

  • Ponovite isti postopek za h_max in ostale funkcije, kot je prikazano na zgornji sliki, nato pa natisnite vse vrednosti z uporabo print ()
  • Izhod je prikazan na drugi sliki. Natisne vrednosti h_min, h_max, s_min, s_max, v_min, s_max

6. korak: Prikaz slike in nastavitev zgornje in spodnje meje

Prikaz slike in nastavitev zgornje in spodnje meje
Prikaz slike in nastavitev zgornje in spodnje meje

Zdaj imamo minimalno in največjo vrednost odtenka, nasičenosti in vrednosti, ki jo bomo uporabili za filtriranje slike, da bomo lahko določili barvni izhod slike.

Za to bomo ustvarili masko s funkcijo cv2.inRange. Pred tem pa bomo nastavili zgornjo in spodnjo mejo odtenka, nasičenosti in vrednosti

Zato ustvarite ime spremenljivke "spodnji" in s funkcijo matričnega števila nastavite obseg min za vse 3, kot sledi

spodnja = np. matrika ([h_min, s_min, v_min])

Ponovite isti korak za zgornji del

zgornja = np. matrika ([h_max, s_max, v_max])

Zdaj bomo ustvarili masko, kot sledi

mask = cv2.inRange (spremenite velikost, spodaj, zgoraj) Znotraj cv2.inRang je prvi argument spremenljivka, v kateri je shranjena moja končna slika, drugi argument bo spodnja meja, tretji argument pa zgornja meja.

Zdaj bomo prikazali glavno sliko in masko. Za prikaz bomo uporabili funkcijo cv2.imshow ()

cv2.imshow ("img", spreminjanje velikosti) To je za prikaz glavne slike. Prvi argument je ime okna, ki mu lahko daste poljubno ime, drugi argument pa je spremenljivka, v kateri je shranjena moja glavna slika, ki jo želite prikazati.

Podobno ponovite korake za masko

cv2.imshow ("Izhod", maska)

7. korak: Zdaj zadnji korak

Zdaj Zadnji korak
Zdaj Zadnji korak

V tem zadnjem koraku bomo izvlekli barvo avtomobila in zaslona.

Ustvaril sem rezultat imena spremenljivke. Spet lahko daste poljubno ime. Zato bomo uporabljali funkcijo cv2.bitwise_and (), v kateri bomo skupaj dodali slike in ustvarili novo sliko. In kjer koli so slikovne pike na obeh slikah, bo to veljalo kot da ali "1".

result = cv2.bitwise_and (spremenite velikost, spremenite velikost, maska = maska)

  • Pri tem bo prvi argument naša podoba
  • Drugi argument bo tudi naša prvotna podoba, sledi pa uporabljena maska, ki smo jo ustvarili prej
  • In nazadnje samo prikažite rezultat s funkcijo imshow

Preprosto kopirajte prilepi ta zadnji korak. To je le zamuda in izhodno okno lahko zapustite s pritiskom na "a" na tipkovnici

8. korak: Končni rezultati

Priporočena: