Sadržaj:

Otkrivanje boja u Pythonu pomoću OpenCV -a: 8 koraka
Otkrivanje boja u Pythonu pomoću OpenCV -a: 8 koraka

Video: Otkrivanje boja u Pythonu pomoću OpenCV -a: 8 koraka

Video: Otkrivanje boja u Pythonu pomoću OpenCV -a: 8 koraka
Video: Computer Vision with Python! Resizing Images 2024, Juli
Anonim
Image
Image

Zdravo! Ova instrukcija se koristi za vodiče o tome kako izdvojiti određenu boju iz slike u pythonu pomoću biblioteke openCV. Ako ste tek počeli koristiti ovu tehniku, ne brinite, na kraju ovog vodiča moći ćete programirati svoj vlastiti program za otkrivanje boja.

Slijede funkcije ili možemo reći tehnike koje ćete učiti, 1. Kako čitati sliku

2. Kako stvoriti trake za praćenje

3. Kako podesiti vrijednost Hue, Saturation i vrijednost slike pomoću traka za praćenje

4. I tada će biti vaš konačni rezultat

Video ispis koji sam priložio možete pogledati u nastavku.

Pa počnimo

Supplies

  • Python 3
  • biblioteka openCV
  • numpy biblioteka

Korak 1: Uvoz biblioteka

Uvoz biblioteka
Uvoz biblioteka

Slika je žutog ferrarija, kako je prikazano, a mi ćemo programirati da iz te slike izvučemo samo žutu boju

Prvi korak će biti uvoz naših biblioteka

1. Uključujući biblioteku openCV. U pythonu se naziva cv2

2. Uključujući numpy biblioteku kao np. "As" nam dopušta da numpy kao np, tako da nema potrebe pisati numpy iznova i iznova

Korak 2: Kreiranje traka za praćenje

Kreiranje traka za praćenje
Kreiranje traka za praćenje

Trake za praćenje su stvorene za podešavanje vrijednosti nijanse, zasićenja i vrijednosti na slici.

cv2. namedWindow ("TrackBars") Ova linija koda se koristi za kreiranje novog izlaznog prozora, a naziv prozora se daje kao TrackBars (Možete dati bilo koje ime koje želite)

cv2.resizeWindow ("TrackBars", 600, 250) Ova funkcija se koristi za promjenu veličine prozora. "TrackBars" je prozor za koji želite promijeniti veličinu jer sam htio promijeniti veličinu TrackBars prozora. Napisao sam to ime. Slijede dva cijela broja. Ta dva cijela broja su širina i visina. Možete se poigrati s ta dva broja kako biste promijenili veličinu

Korak 3: Kreiranje TrackBars za Hue, Saturation i Value

Kreiranje TrackBars za Hue, Saturation i Value
Kreiranje TrackBars za Hue, Saturation i Value
Kreiranje TrackBars za Hue, Saturation i Value
Kreiranje TrackBars za Hue, Saturation i Value

Sada ćemo stvarati ukupno 6 TrackBars za Hue, Saturation i vrijednost. Svaki će imati dva, tj. 1 za minimum i 1 za maksimum. Koristit ćemo createTrackbar funkciju openCV -a. Prvo ćemo vidjeti sintaksu ove funkcije.

cv2.createTrackbar ("WINDOWNAME", "MAINWINDOWNAME", "RANGE"). Ovo može biti zbunjujuće, ali ne brinite, proći ćemo svaki korak. Imajte na umu jednu stvar: u openCV vrijednosti nijanse je 179, zasićenje je 255, a vrijednost 255

1. Kreiranje TrackBar -a za hue min:

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

U ovom Hue min je naziv trake za praćenje, TrackBars je glavni prozor, 0 je položaj na kojem će se nalaziti naš klizač, a 179 je raspon znači da će se pomak pomaknuti od 0-179

2. Kreiranje TrackBar -a za hue max:

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

U ovom Hue max je naziv trake za praćenje, TrackBars je glavni prozor, 179 je položaj na kojem će se nalaziti naš klizač, a 179 je maksimalni raspon znači da će se kliznik pomaknuti sa 179-0

3. Slično ponovite korake za sat min, sat max, val min i val max kako je prikazano na slici

Slika sa bijelom pozadinom je izlazna slika. Ovako će izgledati trake za praćenje

Korak 4: Kako pročitati i promijeniti veličinu slike

Kako čitati i mijenjati veličinu slike
Kako čitati i mijenjati veličinu slike

cv2.imread () omogućava čitanje slike. Jedna važna misao koju morate imati na umu da lokacija vaše slike mora biti u istoj mapi u kojoj je program spremljen. Stavit ćemo while petlju jer bi se trebala izvoditi sve dok ne čita sliku ili možemo reći dok uvjet ne bude istinit

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

  • U ovome sam stvorio naziv varijable "img" u koji spremam sliku
  • Unutar cv2.imread upišite naziv slike sa ekstenzijom unutar dvostrukih navodnika

Za promjenu veličine slike koristit ćemo funkciju cv2.resize. Ovaj dio nije obavezan, ako želite promijeniti veličinu, možete koristiti ovu funkciju

Unutar cv2.resize prvo napišite naziv varijable u kojoj je slika pohranjena, a zatim njenu širinu i visinu

Korak 5: Čitanje vrijednosti trake za praćenje kako biste je primijenili na sliku

Čitanje vrijednosti trake za praćenje kako biste je primijenili na sliku
Čitanje vrijednosti trake za praćenje kako biste je primijenili na sliku
Čitanje vrijednosti trake za praćenje kako biste je primijenili na sliku
Čitanje vrijednosti trake za praćenje kako biste je primijenili na sliku

U redu, sada ćemo pročitati vrijednosti trake trake kako bismo ih mogli primijeniti na našu sliku. Vrijednosti ćemo dobiti pomoću funkcije cv2.getTrackbarPos ().

Počnimo s tim dijelom…

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

U gornjoj izjavi kreiram naziv varijable h_min u koji ću pohraniti vrijednost Hue min. Tako bi unutar cv2.getTrackbarPos prvi argument bio "Hue min" jer želim vrijednosti hue min (Pravopis mora biti potpuno isti kao što je i funkcija createTrackbar), a drugi argument bi bio naziv prozora trake kojemu pripada.

  • Ponovite isti postupak za h_max i ostale funkcije kao što je prikazano na gornjoj slici, a zatim ispišite sve vrijednosti pomoću funkcije print ()
  • Izlaz je prikazan na drugoj slici. Ispisuje vrijednosti h_min, h_max, s_min, s_max, v_min, s_max

Korak 6: Prikaz slike i postavljanje gornje i donje granice

Prikaz slike i postavljanje gornje i donje granice
Prikaz slike i postavljanje gornje i donje granice

Sada imamo minimalnu i maksimalnu vrijednost nijanse, zasićenja i vrijednosti. Koristit ćemo ovu vrijednost za filtriranje slike kako bismo mogli odrediti izlaz boje u boji.

Za ovo ćemo stvoriti masku pomoću funkcije cv2.inRange. Prije toga ćemo postaviti gornju i donju granicu nijanse, zasićenja i vrijednosti

Zato stvorite naziv varijable "lower" i pomoću funkcije numpy array postavite raspon min za sve 3 na sljedeći način

donji = np. matrica ([h_min, s_min, v_min])

Ponovite isti korak za gornji dio

gornji = np.razred ([h_max, s_max, v_max])

Sada ćemo stvoriti masku kako slijedi

mask = cv2.inRange (promijeni veličinu, donji, gornji) Unutar cv2.inRang prvi argument bila bi varijabla u kojoj je pohranjena moja konačna slika, drugi argument bit će donja granica, a treći argument gornja granica.

Sada ćemo prikazati glavnu sliku i masku. Za prikaz ćemo koristiti funkciju cv2.imshow ()

cv2.imshow ("img", promijeni veličinu) Ovo služi za prikaz glavne slike. Prvi argument je naziv prozora kojem možete dati bilo koje ime, a drugi argument je varijabla u kojoj je pohranjena moja glavna slika koju želite prikazati.

Slično ponovite korake za masku

cv2.imshow ("Izlaz", maska)

Korak 7: Sada završni korak

Sada posljednji korak
Sada posljednji korak

U ovom posljednjem koraku izdvojit ćemo boju automobila i zaslona.

Kreirao sam rezultat imena varijable. Opet možete dati bilo koje ime koje želite. Zato ćemo koristiti funkciju cv2.bitwise_and () u kojoj ćemo zajedno dodavati slike i stvarati novu sliku. I gdje god su pikseli na obje slike prisutni, to će biti da ili "1".

rezultat = cv2.bitwise_and (promijenite veličinu, promijenite veličinu, maska = maska)

  • U ovome će prvi argument biti naša slika
  • Drugi argument će također biti naša originalna slika, ali slijedi primijenjena maska koju smo prethodno stvorili
  • I na kraju samo prikažite rezultat pomoću funkcije imshow

Samo kopirajte zalijepi ovaj zadnji korak. To je samo odgoda i možete izaći iz izlaznog prozora pritiskom na "a" na tipkovnici

Korak 8: Završni rezultati

Preporučuje se: