Taula de continguts:

Detecció de color a Python mitjançant OpenCV: 8 passos
Detecció de color a Python mitjançant OpenCV: 8 passos

Vídeo: Detecció de color a Python mitjançant OpenCV: 8 passos

Vídeo: Detecció de color a Python mitjançant OpenCV: 8 passos
Vídeo: Color detection using opencv 2024, De novembre
Anonim
Image
Image

Hola! Aquesta instrucció s'utilitza per guiar sobre com extreure un color específic d'una imatge en python mitjançant la biblioteca openCV. Si no coneixeu aquesta tècnica, no us preocupeu, al final d'aquesta guia podreu programar el vostre propi programa de detecció de color.

A continuació es detallen les funcions o podem dir tècniques que aprendràs, 1. Com llegir una imatge

2. Com crear barres de seguiment

3. Com ajustar el valor de la tonalitat, la saturació i el valor d’una imatge mitjançant les barres de seguiment

4. I després hi haurà la vostra sortida final

Podeu veure el vídeo de la sortida que he adjuntat a continuació.

Comencem doncs

Subministraments

  • Python 3
  • biblioteca openCV
  • biblioteca numpy

Pas 1: importació de biblioteques

Importació de biblioteques
Importació de biblioteques

La imatge és de ferrari groc com es mostra i programarem només per extreure el color groc d’aquesta imatge

El primer pas serà importar les nostres biblioteques

1. Inclou la biblioteca openCV. Es diu cv2 a python

2. Inclou la biblioteca numpy com a np. Les "com" ens permeten numpy com np, de manera que no cal escriure numpy una i altra vegada

Pas 2: creació de barres de seguiment

Creació de barres de seguiment
Creació de barres de seguiment

Les barres de seguiment es creen per ajustar el valor de la tonalitat, la saturació i el valor d’una imatge.

cv2.namedWindow ("TrackBars") Aquesta línia de codi s'utilitza per crear una nova finestra de sortida i el nom de la finestra es dóna com a TrackBars (Podeu donar el nom que vulgueu)

cv2.resizeWindow ("TrackBars", 600, 250) Aquesta funció s'utilitza per canviar la mida d'una finestra. "TrackBars" és per a la finestra que voleu canviar la mida, ja que volia canviar la mida de la finestra de TrackBars, he escrit aquest nom. Seguit de dos enters. Aquests dos enters són l'amplada i l'alçada. Podeu jugar amb aquests dos números per canviar la mida

Pas 3: Creació de barres de seguiment per a la tonalitat, la saturació i el valor

Creació de barres de seguiment per a la tonalitat, la saturació i el valor
Creació de barres de seguiment per a la tonalitat, la saturació i el valor
Creació de barres de seguiment per a la tonalitat, la saturació i el valor
Creació de barres de seguiment per a la tonalitat, la saturació i el valor

Ara crearem 6 TrackBars per a Hue, Saturation i valor. Cadascun tindrà dos, és a dir, 1 com a mínim i 1 com a màxim. Utilitzarem la funció createTrackbar d’openCV. Primer veurem la sintaxi d’aquesta funció.

cv2.createTrackbar ("WINDOWNAME", "MAINWINDOWNAME", "RANGE"). Pot ser que sigui confús, però no us preocupeu, passarem per cada pas. Tingueu en compte que en valors openCV de tonalitat és 179, la saturació és 255 i el valor és 255

1. Creació de TrackBar per a la tonalitat mínima:

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

En aquest Hue min hi ha el nom de la barra de seguiment, TrackBars és la finestra principal, 0 és la posició sobre la qual estarà el nostre control lliscant i 179 és el rang que significa que el més suau es mourà de 0 a 179

2. Creació de TrackBar per a la tonalitat màxima:

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

En aquest Hue max hi ha el nom de la barra de seguiment, TrackBars és la finestra principal, 179 és la posició sobre la qual estarà el nostre control lliscant i 179 és l’abast màxim significa que el més suau es mourà de 179-0

3. De manera similar, repetiu els passos per sat min, sat max, val min i val max tal com es mostra a la imatge

La imatge amb el fons blanc és la imatge de sortida. Així quedaran les vostres barres de seguiment

Pas 4: Com llegir i canviar la mida de la imatge

Com llegir i canviar la mida de la imatge
Com llegir i canviar la mida de la imatge

cv2.imread () us permet llegir la imatge. Una cosa important que heu de tenir en compte és que la ubicació de la vostra imatge ha de ser a la mateixa carpeta on es guarda el programa. Posarem el bucle while perquè hauria d’executar-se fins que es llegeixi la imatge o podem dir fins que la condició sigui certa

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

  • En això he creat un nom de variable "img" en el qual emmagatzemar la imatge
  • Dins de cv2.imread escriviu el nom de la imatge amb la seva extensió dins de cometes dobles

Per canviar la mida d’una imatge, utilitzarem la funció cv2.resize. Aquesta part és opcional, si voleu canviar la mida, podeu utilitzar aquesta funció

Dins de cv2.resize, primer escriviu el nom de la variable on s’emmagatzema la imatge i després l’amplada i l’alçada

Pas 5: llegir els valors de la barra de seguiment per aplicar-lo a una imatge

Lectura de valors de la barra de pista per aplicar-lo a una imatge
Lectura de valors de la barra de pista per aplicar-lo a una imatge
Lectura de valors de la barra de pista per aplicar-lo a una imatge
Lectura de valors de la barra de pista per aplicar-lo a una imatge

D’acord, ara llegirem els valors de la barra de seguiment perquè puguem aplicar-los a la nostra imatge. Obtindrem els valors mitjançant la funció cv2.getTrackbarPos ().

Comencem per aquesta part …

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

A la declaració anterior, estic creant un nom de variable h_min en el qual emmagatzemaré el valor de Hue min. Per tant, dins de cv2.getTrackbarPos, el primer argument seria "Hue min" perquè vull valors de hue min (l'ortografia ha de ser exactament la mateixa que la funció createTrackbar) i el segon argument seria el nom de la finestra de la barra de seguiment a la qual pertany.

  • Repetiu el mateix procés per a h_max i la resta de funcions que es mostra a la imatge anterior i, a continuació, imprimiu tots els valors mitjançant print ()
  • La sortida es mostra a la segona imatge. S'està imprimint els valors de h_min, h_max, s_min, s_max, v_min, s_max

Pas 6: mostrar la imatge i configurar el límit superior i inferior

Visualització de la imatge i configuració del límit superior i inferior
Visualització de la imatge i configuració del límit superior i inferior

Ara tenim el valor mínim i màxim de tonalitat, saturació i valor. Utilitzarem aquest valor per filtrar la imatge i així poder obtenir la sortida de color particular d’una imatge.

Crearem una màscara per a això mitjançant la funció cv2.inRange. I abans establirem el límit superior i inferior de tonalitat, saturació i valor

Per tant, creeu un nom de variable "inferior" i, mitjançant la funció de matriu numpy, configureu l'interval de min per a les 3 de la següent manera

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

Repetiu el mateix pas per a la part superior

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

Ara crearem una màscara com segueix

mask = cv2.inRange (redimensionar, inferior, superior) Dins de cv2.inRang, el primer argument seria la variable on s’emmagatzema la meva imatge final, el segon argument serà el límit inferior i el tercer argument el límit superior.

Ara mostrarem la imatge i la màscara principals. Per mostrar utilitzarem la funció cv2.imshow ()

cv2.imshow ("img", canvia la mida) Es tracta de mostrar la imatge principal. El primer argument és el nom de la finestra que podeu donar a qualsevol nom que vulgueu i el segon argument és variable en què s’emmagatzema la meva imatge principal que voleu mostrar.

De la mateixa manera, repetiu els passos per a la màscara

cv2.imshow ("Sortida", màscara)

Pas 7: ara el pas final

Ara el pas final
Ara el pas final

En aquest pas final extraurem el color del cotxe i la pantalla.

He creat un resultat de nom de variable. De nou podeu donar el nom que vulgueu. Per tant, utilitzarem la funció cv2.bitwise_and () en la qual afegirem a les imatges juntes i crearem una nova imatge. I allà on hi hagi els píxels de les dues imatges, ho prendrà com a sí o "1".

result = cv2.bitwise_and (canviar la mida, canviar la mida, màscara = màscara)

  • En això, el primer argument serà la nostra imatge
  • El segon argument serà també la nostra imatge original, però seguit de la màscara aplicada que hem creat abans
  • I, finalment, només heu de mostrar el resultat mitjançant la funció imshow

Simplement copieu, enganxeu aquest darrer pas, és només un retard i podeu sortir de la finestra de sortida prement "a" al teclat

Pas 8: Sortides finals

Recomanat: