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, Srpanj
Anonim
Image
Image

Zdravo! Ova instrukcija se koristi za vodiče o tome kako izvući 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 krenimo

Pribor

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

Korak 1: Uvoz knjižnica

Uvoz knjižnica
Uvoz knjižnica

Slika je žutog ferrarija kako je prikazano, a mi ćemo programirati izdvajanje samo žute boje iz te slike

Prvi korak bit će uvoz naših knjižnica

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

2. Uključujući knjižnicu numpy kao np. Znakovi "as" dopuštaju nam da numpy označimo kao np pa nema potrebe pisati numpy iznova i iznova

Korak 2: Stvaranje traka tragova

Stvaranje traka tragova
Stvaranje traka tragova

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

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

cv2.resizeWindow ("TrackBars", 600, 250) Ova se funkcija koristi za promjenu veličine prozora. "TrackBars" je za koji prozor želite promijeniti veličinu budući da sam želio 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: Stvaranje TrackBars za Hue, Saturation i Value

Stvaranje TrackBars za Hue, Saturation i Value
Stvaranje TrackBars za Hue, Saturation i Value
Stvaranje TrackBars za Hue, Saturation i Value
Stvaranje 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 bi moglo biti zbunjujuće, ali ne brinite, proći ćemo svaki korak. Imajte na umu jednu stvar: u openCV -u vrijednosti hue su 179, zasićenje je 255, a vrijednost 255

1. Stvaranje TrackBar -a za min. Nijanse:

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. Stvaranje 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 najveći 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 s 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ćuje čitanje slike. Jedna važna misao koju morate imati na umu da mjesto vaše slike mora biti u istoj mapi u kojoj je program spremljen. Umetnut ćemo while petlju jer bi se trebala izvoditi dok ne čita sliku ili možemo reći dok uvjet ne bude istinit

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

  • Ovdje sam stvorio naziv varijable "img" u koji spremam sliku
  • Unutar cv2.imread upišite naziv slike s nastavkom 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 najprije napišite naziv varijable u koju je slika pohranjena, a zatim njezinu širinu i visinu

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

Čitanje vrijednosti trake zapisa za primjenu na sliku
Čitanje vrijednosti trake zapisa za primjenu na sliku
Čitanje vrijednosti trake zapisa za primjenu na sliku
Čitanje vrijednosti trake zapisa za primjenu na sliku

U redu, sada ćemo č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 stvaram 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 bio bi 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 koju ćemo koristiti za filtriranje slike kako bismo mogli odrediti izlaz boje u boji.

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

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

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

Ponovite isti korak za gornji dio

gornji = np.mat ([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 je 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 posljednji korak

Sada posljednji korak
Sada posljednji korak

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

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

result = cv2.bitwise_and (promijeni veličinu, promijeni veličinu, maska = maska)

  • U ovome će prvi argument biti naša slika
  • Drugi argument bit će i naša izvorna 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čeni: