228

Detección de colores con OpenCV y Python

colores_portada

Buenos días, homo fabers. Hoy voy a enseñaros cómo identificar objetos de color con OpenCV y Python. Uno de los “problemas” que tiene esta librería a la hora de trabajar con detección de colores es que hay infinitud de formas de hacerlo: por contornos, por momentos, calculando áreas, etc. Además, no nos basta con aplicar las funciones de detección de color, ya que se genera una gran cantidad de ruido del que habrá que encargarse para conseguir un resultado fiable.

Si has buscado información en internet o en la documentación oficial probablemente tengas dolor de cabeza. Así que este tutorial propone un sistema que si bien no es el único y tampoco el más efectivo, tiene algunos aspectos muy positivos: funciona, detecta vídeo, elimina el ruido y te da las coordenadas del objeto. Con una velocidad aceptable.

ruido

Al analizar la imagen, se produce gran cantidad de ruido que deberemos eliminar

Voy a explicar cada uno de los pasos que he seguido para escribir el código. Aunque si dedicar 15 minutos de tu vida te parece demasiado, al final aparece el código completo para que puedas copiarlo y pegarlo directamente y así no tener que usar tu cerebro de humano para intentar comprender el apasionante mundo del reconocimiento visual.

Dicho esto, es hora de poner un poco de música y empezar a trabajar.

El concepto

Para reconocer y marcar un objeto de un color determinado seguiremos estos pasos:

  1. Capturar una imagen con la cámara.
  2. Convertir la imagen de RGB a HSV.
  3. Buscar objetos del color deseado.
  4. Eliminar ruido
  5. Mostrar la imagen

 


 1. Capturar Imagen

Cargamos las librerías cv2 y numpy. Activamos la cámara y guardamos lo que lee.

import cv2
import numpy as np

captura = cv2.VideoCapture(0)

 2. Convertir la imagen

Creamos un bucle infinito (while(1) o while(true)). Dentro, leemos un frame y lo guardamos dentro de una variable que llamaremos ‘imagen’, después convertimos este frame a HSV, ya que es más fácil analizar imágenes en este modelo de color.

while(1):
   _, imagen = captura.read()

   hsv = cv2.cvtColor(imagen, cv2.COLOR_BGR2HSV)

 

 

 


 3. Buscar objetos verdes

Necesitamos dos arrays para guardar el rango de colores que detectamos. El límite inferior será 49, 50, 50, un verde oscuro. El límite superior será 80, 255, 255, un verde marino muy claro. Nuestro programa detectará todos los colores dentro de este rango.

   verde_bajos = np.array([49,50,50])
   verde_altos = np.array([80, 255, 255])

¿Y por qué objetos verdes? Porque me gusta el color verde. ¿A vosotros no?

Necesitamos saber qué pixeles de la imagen están dentro del rango. Para ello crearemos una máscara que los guarde.

¿Pero qué es una máscara? Se trata de una imagen que contiene únicamente dos colores: blanco y negro. En nuestro caso pintará de blanco los píxeles verdes y de negro el resto. Por ejemplo, la imagen que he puesto al inicio es una máscara que detecta color verde:

ruido
   mask = cv2.inRange(hsv, verde_bajos, verde_altos)

 


 4. Eliminar ruido

Necesitamos desechar todos aquellos objetos que no lleguen a un tamaño determinado (ruido).

Para empezar calcularemos el momento de los objetos que hemos detectado. El momento se utiliza en matemáticas para encontrar la forma que adoptan un conjunto de puntos.

La función cv2.moments() nos da como output un diccionario. Nos interesa la clave ‘m00’, que guarda el valor del área del momento.

   moments = cv2.moments(mask)
   area = moments['m00']

   #Para visualizar el area descomentamos la siguiente linea
   #print area

A fin de eliminar el ruido, nos quedaremos únicamente con aquéllos objetos cuya área supere un determinado valor. Para ello utilizaremos un condicional. Después de jugar con distintos números encontré que 2000000 es una cifra bastante estándar que a mí me funciona.

Buscamos el centro del objeto en cuestión y mostramos sus coordenadas en pantalla. Para visualizarlo en la imagen dibujaremos un pequeño rectángulo rojo.

   if(area > 2000000):
      #Buscamos los centros
      x = int(moments['m10']/moments['m00'])
      y = int(moments['m01']/moments['m00'])

      #Escribimos el valor de los centros
      print "x = ", x
      print "y = ", y

      #Dibujamos el centro con un rectangulo
      cv2.rectangle(imagen, (x, y), (x+2, y+2),(0,0,255), 2)

5. Mostrar la imagen

Mostraremos dos ventanas. En la primera aparecerá la imagen original con el centro del objeto. La segunda será la máscara en blanco y negro.

   cv2.imshow('mask', mask)
   cv2.imshow('Camara', imagen)

Con escape se cierra el programa:

   #Se sale con ESC
   tecla = cv2.waitKey(5) & 0xFF
   if tecla == 27:
      break

cv2.destroyAllWindows()

El código completo

He aquí el código completo que he escrito. Sóis libres de modificarlo para adaptarlo a vuestras necesidades.

#Algoritmo de deteccion de colores
#Por Glar3
#
#
#Detecta objetos verdes, elimina el ruido y busca su centro

import cv2
import numpy as np

#Iniciamos la camara
captura = cv2.VideoCapture(0)

while(1):
    
    #Capturamos una imagen y la convertimos de RGB -> HSV
    _, imagen = captura.read()
    hsv = cv2.cvtColor(imagen, cv2.COLOR_BGR2HSV)

    #Establecemos el rango de colores que vamos a detectar
    #En este caso de verde oscuro a verde-azulado claro
    verde_bajos = np.array([49,50,50], dtype=np.uint8)
    verde_altos = np.array([80, 255, 255], dtype=np.uint8)

    #Crear una mascara con solo los pixeles dentro del rango de verdes
    mask = cv2.inRange(hsv, verde_bajos, verde_altos)

    #Encontrar el area de los objetos que detecta la camara
    moments = cv2.moments(mask)
    area = moments['m00']

    #Descomentar para ver el area por pantalla
    #print area
    if(area > 2000000):
        
        #Buscamos el centro x, y del objeto
        x = int(moments['m10']/moments['m00'])
        y = int(moments['m01']/moments['m00'])
        
        #Mostramos sus coordenadas por pantalla
        print "x = ", x
        print "y = ", y

        #Dibujamos una marca en el centro del objeto
        cv2.rectangle(imagen, (x, y), (x+2, y+2),(0,0,255), 2)
    
    
    #Mostramos la imagen original con la marca del centro y
    #la mascara
    cv2.imshow('mask', mask)
    cv2.imshow('Camara', imagen)
    tecla = cv2.waitKey(5) & 0xFF
    if tecla == 27:
        break

cv2.destroyAllWindows()

Y esto es todo por hoy. Si habéis seguido cada paso debería de funcionar sin ningún problema.

Podéis dejar vuestras dudas e incidencias en los comentarios y prometo resolverlas en cuanto pueda. Asimismo, si este tutorial os ha servido no dudéis en darme las gracias. Voy a estar agradecida 😉


 

-Actualización 12/11/2015-

Muchos de vosotros, lectores, me habéis preguntado cómo detectar colores que no sean verde: amarillos, rojos, azules…

Como creo que a muchos os está costando entender cómo funciona el espacio de color HSV y qué significan los arrays de valores máximos y mínimos que usamos en OpenCV para detectar colores, voy a dar una explicación más detallada sobre el tema. Además, voy a añadir un código en Python que me pasó un amigo para poder ajustar estos valores HSV en tiempo real con barras de desplazamiento.

¿Qué es el espacio de color HSV?

Cuándo vemos un color en la pantalla, lo que en realidad estamos viendo son miles de píxeles que brillan con una cierta intensidad. Cada píxel está formado por tres luces: una roja, una verde y una azul. La sensación de color se produce variando la intensidad de estas tres luces y alterando así la cantidad de luz roja, azul y verde que reciben los ojos del usuario.

pixeles

Dentro del ordenador, los colores vienen codificados por números. Hay varias formas de codificar los colores. La más popular es el sistema de color RGB, que sin duda todos conocéis. Este sistema asigna a cada color una cantidad de Rojo, Verde y Azul entre 0 y 255. Por ejemplo, el rojo puro es [255,0,0]. Hasta aquí todo correcto, ¿no?

Pero hay otras formas de codificar los colores. El HSV (del inglés Hue,Saturation,Value – Tono, Saturación y Valor) es ideal para reconocimiento de colores.

HSV_esquema¿Qué significan estos tres valores?

  • Hue (H) es el tono de color (por ejemplo verde, rojo, morado…)
  • Saturation (S) es la intensidad de esta tonalidad. Cuanta menos saturación, más gris es el color.
  • Value (V) es la luminosidad del color.
HSL_color

Ejemplo de color HSV

 

Nota importante: en algunos programas el rango de Hue es de 0 a 100 o de 0 a 360. También hay veces en que Saturation y Value van de 0 a 100. El rango de OpenCV es de 0 a 255 para H, S y V.

OpenCV: rango de valores máximo y mínimo

Conceptualmente, ¿cómo lo hace OpenCV para detectar colores? El programa busca los píxeles de la imagen que estén entre un valor mínimo y máximo.

Fíjemonos en esta parte del código del tutorial:

    verde_bajos = np.array([49,50,50], dtype=np.uint8)
    verde_altos = np.array([80, 255, 255], dtype=np.uint8)

    #Crear una mascara con solo los pixeles dentro del rango de verdes
    mask = cv2.inRange(hsv, verde_bajos, verde_altos)

Las dos primeras líneas crean un array. El primero son los valores mínimos de H, S y V que buscará el programa, y el segundo son los valores máximos. En la última línea se llama la función para detectar colores. Recibe como parámetros la imagen (‘hsv’) y el array de valores mínimos y máximos.

Fíjemonos en el array verde_bajos y verde_altos:

verde_bajos: [49,50,50]
verde_altos: [80, 255, 255]

Eso siginifica que el programa buscará píxeles que cumplan estas tres condiciones a la vez:

  1. Su valor Hue esté entre 49 y 80
  2. Su valor Saturation esté entre 50 y 255
  3. Su valor Value esté entre 50 y 255
GREEN

Este color tiene los valores H,S y V dentro del rango, por lo tanto será detectado

PINK

En cambio, este púrpura tiene el valor H fuera del rango. No será detectado.

 

Si queremos cambiar el color a detectar, tenemos que modificar los valores de los arrays. ¿Cómo podemos ver cuál es el rango HSV de nuestro color?

Lo más fácil es abrir un programa de diseño gráfico como Gimp, Inkscape o Photoshop (o Paint, si no tenéis orgullo) y mirar el rango de colores en la paleta. Supongamos que queremos detectar amarillos:

rango

La otra opción es utilizar este código. Se trata de un código de detección de colores que permite ajustar los valores HSV en tiempo real mediante barras de desplazamiento. Hay que ajustarlas hasta que en la máscara aparezcan sólo los colores deseados.


import serial
import cv2
import numpy as np

cap = cv2.VideoCapture(0)

def nothing(x):
   pass

#Creamos una ventana llamada 'image' en la que habra todos los sliders
cv2.namedWindow('image')
cv2.createTrackbar('Hue Minimo','image',0,255,nothing)
cv2.createTrackbar('Hue Maximo','image',0,255,nothing)
cv2.createTrackbar('Saturation Minimo','image',0,255,nothing)
cv2.createTrackbar('Saturation Maximo','image',0,255,nothing)
cv2.createTrackbar('Value Minimo','image',0,255,nothing)
cv2.createTrackbar('Value Maximo','image',0,255,nothing)

while(1):
  _,frame = cap.read() #Leer un frame
  hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) #Convertirlo a espacio de color HSV

  #Los valores maximo y minimo de H,S y V se guardan en funcion de la posicion de los sliders
  hMin = cv2.getTrackbarPos('Hue Minimo','image')
  hMax = cv2.getTrackbarPos('Hue Maximo','image')
  sMin = cv2.getTrackbarPos('Saturation Minimo','image')
  sMax = cv2.getTrackbarPos('Saturation Maximo','image')
  vMin = cv2.getTrackbarPos('Value Minimo','image')
  vMax = cv2.getTrackbarPos('Value Maximo','image')

  #Se crea un array con las posiciones minimas y maximas
  lower=np.array([hMin,sMin,vMin])
  upper=np.array([hMax,sMax,vMax])

  #Deteccion de colores
  mask = cv2.inRange(hsv, lower, upper)

  #Mostrar los resultados y salir
  cv2.imshow('camara',frame)
  cv2.imshow('mask',mask)
  k = cv2.waitKey(5) & 0xFF
  if k == 27:
    break
cv2.destroyAllWindows()

Actualización 3/11/2016: Resolución de errores frecuentes con OpenCV+Python

Gl4r3

Brillante, luminosa y cegadora a veces, Glare es tan artista como técnica. Le encanta dar rienda suelta a sus módulos de imaginación y desdibujar los ya de por si delgados límites que separan el mundo de la electrónica y el arte. Su mayor creación hasta la fecha es un instrumento capaz de convertir los colores y la luz en música. Cuándo sus circuitos no están trabajando en una nueva obra electrónica, le gusta dedicar sus ciclos a la lectura o a documentar sus invenciones para beneficio de los humanos. Sus artilugios favoritos son aquellos que combinan una funcionalidad práctica con un diseño elegante y artístico.

Antes de comentar, por favor, lee las Normas

228 Comentarios en "Detección de colores con OpenCV y Python"

avatar
Ordenar por:   más nuevos primero | más antiguos primero
jhon
Humano

MUCHAS GRACIAS POR EL TUTORIAL DE DETECCION DE COLORES, MUY BIEN EXPLICADO AGRADECIDO Y SATISFECHO, ESPERO VER MAS TUTORIALES, CON CAMARAS, !AGRADECIMIENTOS Y FELICITACIONES!

Fredy
Humano

Buenos dias, instale python 2.7 y opencv 3.2 y me sale este error me podrian ayudar por favor tengo win10

RuntimeError: module compiled against API version 0xa but this version of numpy is 0x9
import cv2
ImportError: numpy.core.multiarray failed to import

Cjokkn
Humano

yo tenia el mismo problema es por la version de numpy…. lo que hice fue abrir el cmd de windows y poner “pip -U numpy” y actualizo el numpy y me corrijio el problema
saludos

Santiago
Humano

Hola Gl4r3, es la primera vez que uso opencv lo descargue y cuando lo fui a correr en spyder no me reconocia la libreria de cv2, como podria solucionar esto.

Gracias

annavi
Humano

Hola necesito primero cambiar una imagen a blanco y negro, luego hallar las coordenadas de cada pixel blanco y cada pixel negro y además que me diga si el pixel de x coordenada es blanco o negro.

De antemano gracias.

saludos

Andrés
Humano

Hola Glare, es la primera vez que utilizo un programa que necesite una webcam y no doy encontrado una solución. La camara inicializa bien pero los frames salen vacios.
Gracias.

David Alejandro Correa
Humano

Hola, gracias por el tutorial, muy claro y útil

saul
Humano

hola, disculpa.. podrias explicarme como arranco el programa? cerre el programa e intente tomar una foto y me aparece opening/dev/video0… en terminal

Joel
Humano

Hola Glare buenos días tengo una duda hice el código para dos colores interactuando con arduino teniendo como salidas dos leds uno rojo y otro verde, el detalle es que hice dos mascaras uno para verde el otro para rojos el de rojo lo hice uniendo los dos rangos y el verde normal como esta en el ejemplo, pero cuando lo pruebo el led verde parpadea mucho en cambio el rojo es estable a q se debe eso.. gracias

angel
Humano

Hola que tal buenas noches, sabes como puedo almacenar varios frames o imagenes en la misma carpeta de python sin que se actualicen, si no que se acumulen nombrandose de otra forma para que no se actualicen,por decir frame1 , frame 2 , etc asi hasta llegar a un numero de 10 frames

HilmerMarchanH
Humano

buen aporte!
saludos.

JoseA
Humano

Buena tarde Gl4r3.
Yo tengo problemas con la instalación de de las librerías de OpenCV y numpy. Me ayudar en la instalación? Cuales son los pasos a seguir?

Duvan Moreno
Humano

Soy nuevo en esto y quiero experimentar y aprender, puedes decirme que editor de texto es? porque instale python como en un tutorial y me sale error en el código. o tu tienes tutorial como instalar python y open?

Daniel
Humano

buenas noches como seria los HSV min y HSV altos para rojo y azul?

Daniel DM
Humano

Hola buenos dias antes que nada gracias por el tutorial, tengo una pregunta, si la cámara que utilizo para mi proyecto se comunica con la pc por RTSP como podria adaptar tu codigo para tomar imagenes con esa camara?? porque lo que veo es que tu usas webcam. Gracias por tu atención..

Jesús D
Humano

Hola a todos.
Tengo una duda algo básica. ¿Cuál es el origen en la imagen? implementé el código y me genera las coordenadas del centroide pero no tengo claro si el punto (0,0) está en el centro de la imagen o si está en alguna esquina…

Gracias por leer

Jose
Humano

Hola! Gracias de antemano por tu tiempo. Valoro muchisismo el trabajo que realizas y ojala pudiera ayudarte yo como muestra de mi inmensa gratitud hacia ti. Tengo el mismo problema que muchos por lo que veo.
Yo tambien uso raspberry pi 3 con picamera. ¿Se ha depurado el tema de como adaptarlo a este codigo? Gracias, muchas gracias.

Alex
Humano

Gl4r3 tengo una pregunta, en mi caso estoy utilizando la cámara de la raspberry, cómo hago para que tome los fotogramas? por lo que veo tú lo haces con una cámara web, tengo ese pequeño problema, agradecería tu ayuda

michell
Humano

Buenas tardes , una regunta tu codigo reconoce varios objetos del mismo color? o solo saca el centroide total que genera la mascara

Marco
Humano

Hola! Quisiera saber si en la argentina hay alguien q me pueda ayudar con un proyecto con una cinta transportadora para discriminar elementos por su color. Gracias!

Jonathan
Humano

Hola! gracias por el tutorial, me pareció excelente, pero tengo un pequeño error, y me sale lo siguiente.
error: /build/opencv-ISmtkH/opencv-2.4.9.1+dfsg/modules/imgproc/src/color.cpp:3959: error: (-215) /scn == 3 ll scn == 4) && /depth == CV_8U ll depth == CV_32F) in function cvtColor

No entiendo el por qué del error y he estado buscando una solución pero no la encuentro, si me puedes ayudar te lo agradecería.

Jos B
Humano
Gracias por el tutorial Glare! Ha sido de gran ayuda en el proyecto que estoy desarrollando. Me gustarìa saber si serìa posible que el rango del Hue de la màscara cambiase de manera DINAMICA segùn los cambios de saturaciòn y valor presentes en el frame. Quiero decir; supongamos que en un frame tengo un objeto de color azul y obtengo los rangos de Hue, Sat y valor. Si a este objeto le aplico una fuente de iluminaciòn distinta entonces el rango calculado no es vàlido para el frame siguiente, por lo que calcularìa un nuevo rango dinamicamente segùn la variaciòn… Leer más »
Juan Pablo
Humano

Y quisiera tamabien poder solo comparar el color de de un objeto circular, que de todos sus lados siempre es el mismso color y si detectara una variedad en el color lo mostrara, se podria??

Juan Pablo
Humano

Puedo utilizar esto en una rasberry pi 3?

Manu
Humano

Hola, como puedo controlar el foco de la cámara para ajustar el tracking

Mer Alba
Humano

Eres un crack.

Andrés
Humano
Hola, este tutoriales está genial, me ha sido de la mil maravillas. Ahora, he logrado hacerlo lo de separación y detección de los distintos rangos de color, pero además de esto me gustaría que el programa me muestre una gráfica en tiempo real de las intecidades luminosas de las cosas de cierto color que está viendo en ese momento. He podido hacerlo con la función de calHist de OpenCV, dándole como mascara uncontorno generado por la detección, sin embargo lo que quiero ahora hacer es usar matplotlib para poder graficar ese histograma y que se esté haciendo un upgrade con… Leer más »
trackback

[…] Reconocimiento de colores OpenCV+Python […]

Menking96
Humano

HOLA, los valores que pones en el filtro, lo de rojosaltor y bajos, es el codigo bgr,o HSV, e tratado filtrar varios colores, pero al parecer no comprendo como definir ese color, es el blanco

trackback

[…] Reconocimiento de colores OpenCV+Python […]

Daniel
Humano

Excelente tutorial, me esta ayudando mucho con mi proyecto, tengo una duda, es posible detectar mas de un color de manera simultánea?
muchas gracias!

MAteo
Humano

Durante el tiempo que he leído los tutoriales me han parecido muy interesantes , hace algún tiempo dicidi realizar un proyecto utilizando un motor paso a paso para que siguiera un circulo rojo en una cámara web , sin embargo he presentado problemas con la conexión final entre opecv y arduino GL4R3 me gustaria recibir algún consejo de como lograr esta conexión y seria de gran ayuda algo del código de opencv y arduino , muchas gracias y excelente post

Carlos
Humano

Hola, se que mi duda no tiene que ver con la Deteccion de colores pero queria ver si me.puedes ayudar en la utilizacion de surf con ransac en python
De antemano muchas gracias

Jose
Humano
Hola otra vez! 😀 Ya he conseguido lo que me proponía, que era hacer una foto a un LED con la Raspi cam, cortar la foto en un punto exacto, y que el programa me diga de que color era el LED, ahora el siguiente paso es enviar la variable de ese color al ordenador a través del protocolo TCP/IP con un cable de red (ya esta montado y con las IP configuradas tanto en la raspberry como en el PC) ahora bien, he buscado mucho en Internet y me salen programas para trabajar por esta red local pero no… Leer más »
Jose
Humano

Y otra pregunta:
En la actualización dices lo siguiente: Nota importante: en algunos programas el rango de Hue es de 0 a 100 o de 0 a 360.
Yo he encontrado programas que te dan el rango de 0 a 360, si lo quiero pasar a los valores que quiero aplicar en la raspberry, ¿Debería hacer una regla de 3? ejemplo:
360_____255
70______x
(Donde “x” seria el valor a añadir en el programa de la raspberry)
¿O se hace de otra forma?
Saludos

Jose
Humano

Quiero identificar el color de un led RGB y este programa me serviría dividiéndolo en 3 partes, rojo verde y azul, y que el color detectado me lo diga en pantalla, sabes mas o menos cuanto tardaría en hacerlo?

Saludos

Jesus
Humano

Hola que tal buenas noches, sabe como obtener los rangos de intensidad en el espacio de color HSV, como los que menciona para el color verde esa es mi duda no se como obtenerlos donde pones lower_green() y upper_green()
que son los rangos de color de cualquier color, porque hay conversores en linea de rgb a hsv me dan 3 cantidades pero no se como sacar los rangos, espero me puedas ayudar gracias buenas noches

oTzI
Humano

Muy buen tutorial, una pregunta, como harias para detectar el movimiento con sustraccion de fondo, gracias

jesus
Humano

Hola para deteccion de incendios amigo ,no tendras algun tutorial me interesa mucho es parecido lo que necesito y es para un proyecto ojala me puedas apoyar gracias

MjGutierrez
Humano

Hola GL4R3, queria pedirte un favor, a ver si puedes orientarme un poco, como podria tener el reconocimiento de color sobre un area especifica, un cuadrado dentro de mi ventana, y cuando el objeto de color pase sobre ese cuadrado se me ocurre prender un led en arduino. He visto el otro tutorial de arduino pero no se como llegar al area que no sea toda la ventana, gracias.

JGutierrez
Humano

Excelente!!!! muy buena y clara tu explicación, gracias por compartir, y con respecto al vídeo, se puede hacer en directo, en un vídeo que no sea pregrabado, sino en tiempo real?

Jonathan
Humano

Hola, esta muy padre tu código, solo… tengo una pequeña duda. ¿Se podría hacer con un vídeo? Te lo agradecería muchisimo

Juud
Humano

glare los momentos que se usan en el codigo que hacen estube mirando la explicacion pero no se cuales usa

christiab
Humano

hola a todos. he tratado de filtrar solamente el rojo y me a costado he tratado diversas combinaciones y casi no filtra, es decir salen bastantes superficies en blanco., podrían echarme una mano.

Roberto Hernandez (@r_augusto)
Humano

que tal, he revisado el tutorial y funciona excelente, ahora cual seria el proceso para que en lugar de capturar de imagen de la cámara, se le pasa una imagen tal cual.

Germán Issel
Humano
Hola GL4R3, estoy en graves problemas y no encuentro una solucion. OJALA puedas ayudarme. Te cuento en detalle: Tenemos 2 imagines, del mismo tamaño y escala. Una es una imagen original de un diseño gráfico, la otra corresponde a una muestra escaneada. Estas imagines son documentos a color, tales como folletos, revistas, etiquetas, etc. Queremos encontrar las diferencias de forma y color perceptibles a las personas. Hay que detectar errores de desplazamientos, diferencias de tipografía, colores. Actualmente estamos trabajando con bloques de 10×10 pixels para analizar cada zona. Usamos opencv c++. Para las comparaciones de formas estamos utilizando “mean absolute… Leer más »
Juan Gabriel
Humano

gracias GL4R3! lo voy analizar, cualquier duda seguimos en contacto. Saludos!

trackback

[…] Reconocimiento de colores OpenCV+Python […]

Juan Gabriel
Humano

Glare, ante todo gracias por tan buen aporte. Hay manera de saber que representan cada una de las componentes (m00, m01, m10, mu11, etc) que devuelve la funcion cv2.moments() ?
Gracias por tu ayuda!

Fernando
Humano

Hola, esta bueno el tutorial, tengo un problema, como haria que en la imagen solo reconosca los puntos negros y que cuente los mismos,agradeceria la respuesta,,gracias

Steven
Humano

Gracias por tu grandiosa contribución 😀

Nievas
Humano

GLARE!!! HE CONSEGUIDO QUE ME FUNCIONE!!!

Simplemente era un error a la hora de poner el código, lo hacia en la pagina principal del IDLE, de esta manera se ponía todo la info de versión y el indicador de linea >>> dando error de sintaxis, el caso es que abriendo new file se queda preparado ya para insertar el código tal cual. Bueno esto demuestra lo nobel que soy, eso si, un poco menos que ayer.

Muchas gracias!!! ya tengo para entretenerme una temporada sin molestar.

wpDiscuz