Sommario:

Rilevamento del colore in Python utilizzando OpenCV: 8 passaggi
Rilevamento del colore in Python utilizzando OpenCV: 8 passaggi

Video: Rilevamento del colore in Python utilizzando OpenCV: 8 passaggi

Video: Rilevamento del colore in Python utilizzando OpenCV: 8 passaggi
Video: Text detection with Python and Opencv | OCR using EasyOCR | Computer vision tutorial 2024, Settembre
Anonim
Image
Image

Ciao! Questo istruibile viene utilizzato per guidare su come estrarre un colore specifico da un'immagine in Python usando la libreria openCV. Se sei nuovo a questa tecnica, non preoccuparti, alla fine di questa guida sarai in grado di programmare il tuo programma di rilevamento del colore personale.

Di seguito sono riportate le funzioni o possiamo dire le tecniche che imparerai, 1. Come leggere un'immagine

2. Come creare le barre di traccia

3. Come regolare il valore di tonalità, saturazione e valore di un'immagine utilizzando le barre di traccia

4. E poi ci sarà il tuo output finale

Puoi guardare il video dell'output che ho allegato di seguito.

Quindi iniziamo

Forniture

  • Pitone 3
  • libreria openCV
  • libreria insensata

Passaggio 1: importazione di librerie

Importazione di librerie
Importazione di librerie

L'immagine è della ferrari gialla come mostrato e programmeremo per estrarre solo il colore giallo da quell'immagine

Il primo passo sarà l'importazione delle nostre librerie

1. Inclusa la libreria openCV. Si chiama cv2 in Python

2. Inclusa la libreria numpy come np. Il "as" ci consente di numpy come np, quindi non c'è bisogno di scrivere numpy ancora e ancora

Passaggio 2: creazione di barre di traccia

Creazione di barre di traccia
Creazione di barre di traccia

Le barre traccia vengono create per regolare il valore di tonalità, saturazione e valore in un'immagine.

cv2.namedWindow("TrackBars") Questa riga di codice è usata per creare una nuova finestra di output e il nome della finestra è dato come TrackBars (puoi dare qualsiasi nome tu voglia)

cv2.resizeWindow("TrackBars", 600, 250) Questa funzione viene utilizzata per ridimensionare una finestra. "TrackBars" è per quale finestra si desidera ridimensionare poiché volevo ridimensionare la finestra TrackBars ho scritto quel nome. Seguito da due numeri interi. Questi due numeri interi sono la larghezza e l'altezza. Puoi giocare con quei due numeri per cambiare la dimensione

Passaggio 3: creazione di trackbar per tonalità, saturazione e valore

Creazione di trackbar per tonalità, saturazione e valore
Creazione di trackbar per tonalità, saturazione e valore
Creazione di trackbar per tonalità, saturazione e valore
Creazione di trackbar per tonalità, saturazione e valore

Ora creeremo un totale di 6 TrackBar per tonalità, saturazione e valore. Ciascuno ne avrà due, ovvero 1 per il minimo e 1 per il massimo. Useremo la funzione createTrackbar di openCV. Per prima cosa vedremo la sintassi di questa funzione.

cv2.createTrackbar("WINDOWNAME", "MAINWINDOWNAME", "RANGE"). Questo potrebbe essere fonte di confusione, ma non preoccuparti, esamineremo ogni singolo passaggio. Tieni presente che nei valori openCV di tonalità è 179, la saturazione è 255 e il valore è 255

1. Creazione di TrackBar per hue min:

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

In questo Hue min è il nome della trackbar, TrackBars è la finestra principale, 0 è la posizione su cui sarà il nostro slider e 179 è l'intervallo significa che il silder si sposterà da 0-179

2. Creazione di TrackBar per hue max:

cv2.createTrackbar("Tonalità max", "TrackBars", 179, 179, vuoto)

In questo Hue max è il nome della trackbar, TrackBars è la finestra principale, 179 è la posizione su cui sarà il nostro slider e 179 è l'intervallo massimo significa che il silder si sposterà da 179-0

3. Allo stesso modo ripeti i passaggi per sat min, sat max, val min e val max come mostrato nell'immagine

L'immagine con lo sfondo bianco è l'immagine di output. Ecco come appariranno le tue track bar

Passaggio 4: come leggere e ridimensionare l'immagine

Come leggere e ridimensionare l'immagine
Come leggere e ridimensionare l'immagine

cv2.imread() ti permette di leggere l'immagine. Una cosa importante è che devi tenere a mente che la posizione della tua immagine deve essere nella stessa cartella in cui è salvato il programma. Inseriremo il ciclo while perché dovrebbe funzionare finché non sta leggendo l'immagine o possiamo dire fino a quando la condizione è vera

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

  • In questo ho creato un nome variabile " img " in cui sto memorizzando l'immagine
  • All'interno di cv2.imread scrivi il nome dell'immagine con la sua estensione tra virgolette

Per ridimensionare un'immagine utilizzeremo la funzione cv2.resize. Questa parte è facoltativa, se vuoi ridimensionare puoi usare questa funzione

All'interno di cv2.resize scrivi prima il nome della variabile in cui è memorizzata l'immagine e poi la sua larghezza e altezza

Passaggio 5: lettura dei valori della barra di traccia per applicarli a un'immagine

Leggere i valori della barra di traccia per applicarlo a un'immagine
Leggere i valori della barra di traccia per applicarlo a un'immagine
Leggere i valori della barra di traccia per applicarlo a un'immagine
Leggere i valori della barra di traccia per applicarlo a un'immagine

Ok, ora leggeremo i valori della barra della trackbar in modo da poterli applicare alla nostra immagine. Otterremo i valori usando la funzione cv2.getTrackbarPos().

Cominciamo da quella parte…

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

Nella dichiarazione di cui sopra sto creando un nome variabile h_min in cui memorizzerò il valore di Hue min. Quindi all'interno di cv2.getTrackbarPos il primo argomento sarebbe " Hue min " perché voglio i valori di hue min (l'ortografia deve essere esattamente la stessa della funzione createTrackbar) e il secondo argomento sarebbe il nome della finestra della trackbar a cui appartiene.

  • Ripeti lo stesso processo per h_max e il resto delle funzioni come mostrato nell'immagine sopra e poi stampa tutti i valori usando print()
  • L'output è mostrato nella seconda immagine. Sta stampando i valori di h_min, h_max, s_min, s_max, v_min, s_max

Passaggio 6: visualizzazione dell'immagine e impostazione del limite superiore e inferiore

Visualizzazione dell'immagine e impostazione del limite superiore e inferiore
Visualizzazione dell'immagine e impostazione del limite superiore e inferiore

Ora abbiamo il valore minimo e massimo di tonalità, saturazione e valore, useremo questo valore per filtrare l'immagine in modo da poter ottenere il particolare colore di un'immagine.

Creeremo una maschera per questo usando la funzione cv2.inRange. E prima imposteremo il limite superiore e inferiore di tonalità, saturazione e valore

Quindi crea un nome di variabile "inferiore" e usando la funzione array numpy imposta l'intervallo di min per tutti e 3 come segue

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

Ripeti lo stesso passaggio per la parte superiore

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

Ora creeremo una maschera come segue

mask = cv2.inRange(resize, lower, upper) All'interno di cv2.inRang il 1° argomento sarebbe la variabile in cui è memorizzata la mia immagine finale, il 2° argomento sarà il limite inferiore e il 3° argomento sarebbe il limite superiore.

Ora mostreremo l'immagine principale e la maschera. Per visualizzare useremo la funzione cv2.imshow()

cv2.imshow("img", ridimensiona) Serve per visualizzare l'immagine principale. Il primo argomento è il nome della finestra che puoi dare a qualsiasi nome tu voglia e il secondo argomento è la variabile in cui è memorizzata la mia immagine principale che vuoi visualizzare.

Allo stesso modo ripeti i passaggi per la maschera

cv2.imshow("Uscita", maschera)

Passaggio 7: ora il passaggio finale

Ora il passo finale
Ora il passo finale

In questo passaggio finale estrarremo il colore dell'auto e del display.

Ho creato un risultato di nome variabile. Di nuovo puoi dare qualsiasi nome tu voglia. Quindi useremo la funzione cv2.bitwise_and() in cui aggiungeremo immagini insieme e creeremo una nuova immagine. E ovunque siano presenti i pixel in entrambe le immagini, lo prenderà come sì o "1".

risultato = cv2.bitwise_and (ridimensiona, ridimensiona, maschera = maschera)

  • In questo il primo argomento sarà la nostra immagine
  • Il secondo argomento sarà anche la nostra immagine originale ma seguita dalla maschera applicata che abbiamo creato prima
  • E infine basta visualizzare il risultato utilizzando la funzione imshow

Basta copiare incollare quest'ultimo passaggio è solo un ritardo e puoi uscire dalla finestra di output premendo " a " sulla tastiera

Passaggio 8: risultati finali

Consigliato: