Taula de continguts:
- Subministraments
- Pas 1: importació de biblioteques
- Pas 2: creació de barres de seguiment
- Pas 3: Creació de barres de seguiment per a la tonalitat, la saturació i el valor
- Pas 4: Com llegir i canviar la mida de la imatge
- Pas 5: llegir els valors de la barra de seguiment per aplicar-lo a una imatge
- Pas 6: mostrar la imatge i configurar el límit superior i inferior
- Pas 7: ara el pas final
- Pas 8: Sortides finals
Vídeo: Detecció de color a Python mitjançant OpenCV: 8 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:12
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
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
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
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
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
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
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
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:
Màquina de pintar per detecció de color: 4 passos
Màquina de pintar amb detecció de color: la màquina de pintar amb detecció de color copia els colors al vostre voltant i us permet dibuixar amb ells. Si teniu la pintura de colors primaris, podeu utilitzar el sensor de color RGB per detectar el color que desitgeu i barrejar-lo. Però recordeu, utilitzeu l’objecte de colors brillants
Detecció senzilla de colors mitjançant OpenCV: 6 passos
Detecció senzilla de colors mitjançant OpenCV: Hola! Avui mostraré un mètode senzill per detectar un color d’un vídeo en directe mitjançant OpenCV i python. Bàsicament, només provaré que el color requerit estigui present o no en el marc de fons i amb els mòduls OpenCV emmascararé aquesta regió i
Seguiment d'objectes basat en la detecció de color: 10 passos
Seguiment d’objectes basat en la detecció de color: història. Vaig fer aquest projecte per aprendre el processament d’imatges amb Raspberry PI i obrir el CV. Per fer aquest projecte més interessant, he utilitzat dos servomotors SG90 i hi heu muntat càmera. Un motor que es movia horitzontalment i un segon motor que es movia verticalment
Detecció d'objectes W / Dragonboard 410c o 820c mitjançant OpenCV i Tensorflow .: 4 passos
Object Detection W / Dragonboard 410c o 820c mitjançant OpenCV i Tensorflow. Aquest document descriu com instal·lar OpenCV, Tensorflow i frameworks d’aprenentatge automàtic per Python 3.5 per executar l’aplicació Detecció d’objectes
Detecció de color mitjançant LED RGB: 4 passos
Detecció de colors mitjançant LED RGB: alguna vegada heu desitjat una manera automatitzada de detectar el color d’un objecte? Brillant la llum d’un determinat color a l’objecte i observant quanta llum es reflecteix cap enrere, es pot saber de quin color és l’objecte. Per exemple, si llueix una llum vermella o