Cuprins:

Detectare simplă a culorilor folosind OpenCV: 6 pași
Detectare simplă a culorilor folosind OpenCV: 6 pași

Video: Detectare simplă a culorilor folosind OpenCV: 6 pași

Video: Detectare simplă a culorilor folosind OpenCV: 6 pași
Video: Cum scrii când începi un caiet nou 2024, Noiembrie
Anonim
Detectare simplă a culorilor folosind OpenCV
Detectare simplă a culorilor folosind OpenCV

Salut! Astăzi voi arăta o metodă simplă de detectare a unei culori dintr-un videoclip live folosind OpenCV și python.

Practic voi testa doar culoarea necesară este prezentă sau nu în cadrul de fundal și folosind module OpenCV voi masca acea regiune și afișez simultan cadrul.

Pasul 1: Fișierele antet

Fișierele antet
Fișierele antet

Acum am folosit două fișiere antet și anume cv2 și NumPy. Practic cv2 este biblioteca OpenCV care încarcă toate fișierele c ++ care sunt importante în timp ce se utilizează comenzile din coduri (conține toate definițiile).

Și Numpy este o bibliotecă python care este esențială pentru stocarea unei matrice multidimensionale. Vom folosi pentru a stoca coordonatele noastre de gamă de culori.

Și numpy ca np ajută practic codul nostru să se scurteze puțin folosind np de fiecare dată în loc de numpy.

Pasul 2: Captarea videoclipului

Captarea videoclipului
Captarea videoclipului

Acest lucru este destul de simplu în timp ce utilizați python. Aici trebuie doar să pornim înregistratorul video, astfel încât să poată începe să înregistreze cadrele.

Acum valoarea din interiorul VideoCapture indică camera, în cazul meu camera este conectată la laptopul meu, deci 0.

Puteți merge în mod similar cu 1 pentru camera secundară și așa mai departe. VideoCapture creează obiectul pentru aceasta.

Pasul 3: Captarea cadrului și definirea culorii

Captarea cadrului și definirea culorii
Captarea cadrului și definirea culorii

Acum, aici trebuie să facem ceva, astfel încât să putem captura cadrul instantaneu al videoclipului, care ne va ajuta să extragem imaginea și să putem lucra la asta în funcție de cerință.

Bucla „în timp ce” ne va ajuta să rulăm bucla la timpul necesar. Acum, „_, frame = cap.read ()” este utilizat pentru a verifica validitatea cadrului capturat și a-l stoca. cap.read () este o variabilă booleană și returnează true dacă cadrul este citit corect și dacă nu primiți cadre nu va afișa nicio eroare, veți obține pur și simplu Niciunul.

Acum linia 11 și linia 12 definesc practic gama de culori pe care trebuie să o detectăm. Pentru aceasta, am obișnuit cu culoarea albastră.

Puteți continua cu orice culoare pentru care trebuie să tastați doar valorile BGR pentru acea culoare anume. Este mai bine să definim două matrice folosind matrice numpy, deoarece detectarea unei anumite culori în lumea reală nu ne va servi scopului, mai degrabă vom defini o gamă de culoare albastră, astfel încât să o detecteze în interiorul intervalului.

Pentru aceasta, am definit două variabile care stochează valorile BGR inferioare și valorile BGR superioare.

Pasul 4: Mascare și extragere

Mascare și extragere
Mascare și extragere

Acum vine sarcina principală de a masca cadrul și de a extrage culoarea cadrului. Am folosit comenzile predefinite prezente în bibliotecă în OpenCV pentru a face mascarea. Practic, mascarea este procesul de eliminare a unei porțiuni a cadrului, adică vom elimina pixelii ale căror valori BGR de culoare care nu se află în gama de culori definită și acest lucru se face prin cv2.inRange. Apoi, aplicăm gama de culori imaginii mascate în funcție de valorile pixelilor și, pentru aceasta, vom folosi cv2.bitwise_and, va atribui pur și simplu culorile regiunii mascate, în funcție de masca și valorile gamei de culori.

Link pentru cv2. bitwise_and:

Pasul 5: În cele din urmă se afișează

În cele din urmă Afișare!
În cele din urmă Afișare!

Aici am folosit cv2.imshow de bază () pentru afișarea pentru fiecare cadru ca imagine. Deoarece am datele cadrului stocate în variabile, le pot prelua în imshow (). Aici am afișat toate cele trei cadre, originale, mascate și colorate.

Acum trebuie să ieșim din bucla while. Pentru aceasta, putem implementa pur și simplu cv2.wait. Key (). Practic indică timpul de așteptare înainte de a răspunde. Deci, dacă treceți 0, va aștepta infinit și 0xFF spune că arhitectura este de 64 de biți. "ord ()" specifică caracterul care, atunci când este apăsat, va executa comanda break în cazul în care bloc și va ieși din buclă.

Apoi cap.release () închide reportofonul și cv2.destroyAllWindows () închide toate ferestrele deschise.

Dacă aveți vreo problemă, vă rugăm să ne anunțați.

Link către codul sursă:

Recomandat: