Sommario:

Rilevamento semplice del colore utilizzando OpenCV: 6 passaggi
Rilevamento semplice del colore utilizzando OpenCV: 6 passaggi

Video: Rilevamento semplice del colore utilizzando OpenCV: 6 passaggi

Video: Rilevamento semplice del colore utilizzando OpenCV: 6 passaggi
Video: HSV Color Range Thresholding - OpenCV Object Detection in Games #6 2024, Dicembre
Anonim
Rilevamento semplice del colore utilizzando OpenCV
Rilevamento semplice del colore utilizzando OpenCV

Ciao! Oggi mostrerò un metodo semplice per rilevare un colore da un video live utilizzando OpenCV e Python.

Fondamentalmente proverò solo che il colore richiesto sia presente o meno nella cornice di sfondo e utilizzando i moduli OpenCV maschererò quella regione e contemporaneamente visualizzerò la cornice.

Passaggio 1: i file di intestazione

I file di intestazione
I file di intestazione

Ora qui ho usato due file di intestazione e cioè cv2 e NumPy. Fondamentalmente cv2 è la libreria OpenCV che carica tutti i file c++ che sono importanti durante l'utilizzo dei comandi nei codici (contiene tutte le definizioni).

E Numpy è una libreria Python essenziale per memorizzare un array multidimensionale. Useremo per memorizzare le nostre coordinate della gamma di colori.

E numpy as np aiuta fondamentalmente il nostro codice ad abbreviare un po' usando np ogni volta invece di numpy.

Passaggio 2: acquisizione del video

Catturare il video
Catturare il video

Questo è abbastanza semplice durante l'utilizzo di Python. Qui dobbiamo solo accendere il videoregistratore in modo che possa iniziare a registrare i fotogrammi.

Ora il valore all'interno di VideoCapture indica la fotocamera, nel mio caso la fotocamera è collegata al mio laptop, quindi 0.

Puoi andare in modo simile a 1 per la fotocamera secondaria e così via. VideoCapture crea l'oggetto per esso.

Passaggio 3: acquisizione della cornice e definizione del colore

Catturare la cornice e definire il colore
Catturare la cornice e definire il colore

Ora qui dobbiamo fare qualcosa in modo da poter catturare il fotogramma istantaneo del video che ci aiuterà a estrarre l'immagine e possiamo lavorarci secondo i requisiti.

Il ciclo "while" ci aiuterà a eseguire il ciclo fino al tempo richiesto. Ora " _, frame = cap.read() " viene utilizzato per verificare la validità del Frame catturato e memorizzarlo. "cap.read() è una variabile booleana e restituisce true se il frame viene letto correttamente e se non ottieni frame non mostrerà alcun errore, otterrai semplicemente None.

Ora la riga 11 e la riga 12 definiscono sostanzialmente la gamma di colori che dobbiamo rilevare. Per questo, ho usato il colore blu.

Puoi procedere con qualsiasi colore di cui hai bisogno per digitare semplicemente i valori BGR per quel particolare colore. È meglio definire due array usando array numpy poiché rilevare un particolare colore nel mondo reale non servirà al nostro scopo, piuttosto definiremo un intervallo di colore blu in modo che rilevi all'interno dell'intervallo.

Per questo, ho definito due variabili che memorizzano i valori BGR inferiori e i valori BGR superiori.

Passaggio 4: mascheratura ed estrazione

Mascheratura ed estrazione
Mascheratura ed estrazione

Ora arriva il compito principale di mascherare la cornice ed estrarre il colore della cornice. Ho usato i comandi predefiniti presenti nella libreria in OpenCV per fare il mascheramento. Fondamentalmente il mascheramento è il processo di rimozione di una parte del fotogramma, ovvero rimuoveremo i pixel il cui colore BGR ha valori che non si trovano nell'intervallo di colori definito e questo viene fatto da cv2.inRange. Successivamente, applichiamo l'intervallo di colori all'immagine mascherata in base ai valori dei pixel e per questo utilizzeremo cv2.bitwise_and, Assegna semplicemente i colori alla regione mascherata a seconda della maschera e dei valori dell'intervallo di colori.

Link per cv2. bitwise_and:

Passaggio 5: finalmente visualizzato

Finalmente in mostra!
Finalmente in mostra!

Qui ho usato il cv2.imshow() di base per la visualizzazione di ogni fotogramma come immagine. Poiché ho i dati del frame memorizzati nelle variabili, posso recuperarli in imshow(). Qui ho visualizzato tutte e tre le cornici, originali, mascherate e colorate.

Ora dobbiamo uscire dal ciclo while. Per questo, possiamo semplicemente implementare cv2.wait. Key(). Fondamentalmente indica il tempo di attesa prima di rispondere. Quindi, se passi 0, aspetterà all'infinito e 0xFF dice che l'architettura è a 64 bit. " ord() " specifica il carattere che se premuto eseguirà il comando break nel blocco if e uscirà dal ciclo.

Quindi cap.release() chiude il videoregistratore e cv2.destroyAllWindows() chiude tutte le finestre aperte.

Se hai qualche problema, per favore fammi sapere.

Link al codice sorgente:

Consigliato: