Cuprins:

Detectarea culorilor în Python folosind OpenCV: 8 pași
Detectarea culorilor în Python folosind OpenCV: 8 pași

Video: Detectarea culorilor în Python folosind OpenCV: 8 pași

Video: Detectarea culorilor în Python folosind OpenCV: 8 pași
Video: Parcare inteligenta in python cu opencv, easyOcr si Yolov5 Sistem de plata integrat Cod complet 2024, Noiembrie
Anonim
Image
Image

Buna! Această instrucțiune este utilizată pentru a ghida despre cum să extrageți o culoare specifică dintr-o imagine din python utilizând biblioteca openCV. Dacă sunteți nou în această tehnică, atunci nu vă faceți griji, la sfârșitul acestui ghid veți putea programa propriul dvs. program de detectare a culorilor.

Următoarele sunt funcțiile sau putem spune tehnici pe care le veți învăța, 1. Cum se citește o imagine

2. Cum se creează bare de urmărire

3. Cum se ajustează valoarea Hue, Saturation și valoarea unei imagini folosind bare de urmărire

4. Și apoi va fi rezultatul final

Puteți viziona videoclipul rezultatului pe care l-am atașat mai jos.

Deci sa începem

Provizii

  • Python 3
  • biblioteca openCV
  • bibliotecă numpy

Pasul 1: Importul bibliotecilor

Importul bibliotecilor
Importul bibliotecilor

Imaginea este de culoare galbenă Ferrari așa cum se arată și vom programa să extragem doar culoarea galbenă din acea imagine

Primul pas va fi importarea bibliotecilor noastre

1. Inclusiv biblioteca openCV. Se numește cv2 în python

2. Inclusiv biblioteca numpy ca np. „Ca” ne permite să ne numpy ca np, deci nu este nevoie să scriem numpy din nou și din nou

Pasul 2: Crearea bare de urmărire

Crearea de bare de urmărire
Crearea de bare de urmărire

Barele de urmărire sunt create pentru a regla valoarea de nuanță, saturație și valoare într-o imagine.

cv2.namedWindow ("TrackBars") Această linie de cod este utilizată pentru a crea o nouă fereastră de ieșire și numele ferestrei este dat ca TrackBars (Puteți da orice nume doriți)

cv2.resizeWindow ("TrackBars", 600, 250) Această funcție este utilizată pentru a redimensiona o fereastră. "TrackBars" este pentru fereastra pe care doriți să o redimensionați, deoarece am vrut să redimensionați fereastra TrackBars, am scris acel nume. Urmat de două numere întregi. Aceste două numere întregi sunt lățimea și înălțimea. Puteți juca cu aceste două numere pentru a schimba dimensiunea

Pasul 3: Crearea TrackBars pentru nuanță, saturație și valoare

Crearea TrackBars pentru nuanță, saturație și valoare
Crearea TrackBars pentru nuanță, saturație și valoare
Crearea TrackBars pentru nuanță, saturație și valoare
Crearea TrackBars pentru nuanță, saturație și valoare

Acum vom crea un total de 6 TrackBars pentru Hue, Saturation și valoare. Fiecare va avea două, adică 1 pentru minim și 1 pentru maxim. Vom folosi funcția createTrackbar a openCV. Mai întâi vom vedea sintaxa acestei funcții.

cv2.createTrackbar ("WINDOWNAME", "MAINWINDOWNAME", "RANGE"). Acest lucru ar putea fi confuz, dar nu vă faceți griji, vom parcurge fiecare pas. Rețineți un lucru că în openCV valorile nuanței sunt 179, saturația este 255 și valoarea este 255

1. Crearea TrackBar pentru nuanță min:

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

În acest Hue min este numele barei de urmărire, TrackBars este fereastra principală, 0 este poziția pe care va fi glisorul nostru și 179 este intervalul înseamnă că silderul se va deplasa de la 0 la 179

2. Crearea TrackBar pentru nuanța maximă:

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

În acest Hue max este numele barei de urmărire, TrackBars este fereastra principală, 179 este poziția pe care va fi glisorul nostru și 179 este intervalul maxim înseamnă că silderul se va deplasa de la 179-0

3. În mod similar, repetați pașii pentru sat min, sat max, val min și val max așa cum se arată în imagine

Imaginea cu fundalul alb este imaginea de ieșire. Așa va arăta bare de urmărire

Pasul 4: Cum să citiți și să redimensionați imaginea

Cum se citește și se redimensionează imaginea
Cum se citește și se redimensionează imaginea

cv2.imread () vă permite să citiți imaginea. Un lucru important trebuie să rețineți că locația imaginii dvs. trebuie să fie în același folder în care este salvat programul. Vom introduce bucla while pentru că ar trebui să ruleze până când citim imaginea sau putem spune până când condiția este adevărată

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

  • În aceasta am creat un nume variabil „img” în care stochez imaginea
  • În interiorul cv2.imread scrieți numele imaginii cu extensia sa în ghilimele duble

Pentru a redimensiona o imagine vom folosi funcția cv2.resize. Această parte este opțională, dacă doriți să redimensionați, puteți utiliza această funcție

În interiorul cv2.resize scrieți mai întâi numele variabilei în care este stocată imaginea și apoi lățimea și înălțimea acesteia

Pasul 5: Citirea valorilor barei de urmărire pentru ao aplica unei imagini

Citirea valorilor barei de urmărire pentru ao aplica unei imagini
Citirea valorilor barei de urmărire pentru ao aplica unei imagini
Citirea valorilor barei de urmărire pentru ao aplica unei imagini
Citirea valorilor barei de urmărire pentru ao aplica unei imagini

Ok, deci acum vom citi valorile barei de bare pentru a le putea aplica imaginii noastre. Vom obține valorile folosind funcția cv2.getTrackbarPos ().

Să începem cu acea parte …

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

În declarația de mai sus creez un nume variabil h_min în care voi stoca valoarea Hue min. Deci, în interiorul cv2.getTrackbarPos primul argument ar fi „Hue min” pentru că vreau valori ale nuanței min.

  • Repetați același proces pentru h_max și restul funcțiilor așa cum se arată în imaginea de mai sus și apoi imprimați toate valorile folosind print ()
  • Ieșirea este afișată în a doua imagine. Se tipărește valorile h_min, h_max, s_min, s_max, v_min, s_max

Pasul 6: Afișarea imaginii și setarea limitei superioare și inferioare

Afișarea imaginii și setarea limitei superioare și inferioare
Afișarea imaginii și setarea limitei superioare și inferioare

Acum avem valoarea minimă și maximă a nuanței, a saturației și a valorii, vom folosi această valoare pentru a filtra imaginea, astfel încât să putem obține rezultatul particular al culorii unei imagini.

Vom crea o mască pentru aceasta folosind funcția cv2.inRange. Și înainte de aceasta, vom seta limita superioară și inferioară de nuanță, saturație și valoare

Deci, creați un nume de variabilă „mai jos” și utilizând funcția matrice numpy setați intervalul de min pentru toate cele 3 după cum urmează

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

Repetați același pas pentru partea superioară

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

Acum vom crea o mască după cum urmează

mask = cv2.inRange (redimensionare, inferior, superior) În interiorul cv2.inRang primul argument ar fi variabila în care este stocată imaginea mea finală, al doilea argument va fi limita inferioară și al treilea argument ar fi limita superioară.

Acum vom afișa imaginea principală și masca. Pentru a afișa vom folosi funcția cv2.imshow ()

cv2.imshow ("img", redimensionare) Aceasta este pentru a afișa imaginea principală. Primul argument este numele ferestrei pe care îl puteți da oricărui nume doriți și al doilea argument este variabil în care este stocată imaginea mea principală pe care doriți să o afișați.

În mod similar, repetați pașii pentru mască

cv2.imshow („Ieșire”, mască)

Pasul 7: Acum pasul final

Acum pasul final
Acum pasul final

În acest ultim pas vom extrage culoarea mașinii și afișajul.

Am creat un rezultat cu nume variabil. Din nou, puteți da orice nume doriți. Deci vom folosi funcția cv2.bitwise_and () în care vom adăuga la imagini împreună și vom crea o nouă imagine. Și oriunde sunt prezenți pixelii din ambele imagini, va fi considerat ca da sau „1”.

result = cv2.bitwise_and (redimensionare, redimensionare, mască = mască)

  • În aceasta, primul argument va fi imaginea noastră
  • Al doilea argument va fi și imaginea noastră originală, dar urmat de masca aplicată pe care am creat-o anterior
  • Și, în cele din urmă, doar afișați rezultatul folosind funcția imshow

Doar copiați și lipiți acest ultim pas, este doar o întârziere și puteți ieși din fereastra de ieșire apăsând „a” de pe tastatură

Pasul 8: ieșiri finale

Recomandat: