OpenCV y Python – No se pueden detectar objetos azules

Estaba mirando esta pregunta:

Cómo detectar un objeto de color azul usando opencv

Sin embargo, después de muchas pruebas y errores, todavía no puedo descubrir cómo detectar objetos azules.

Aquí está mi código:

import cv2 import numpy as np cam=cv2.VideoCapture(0) n=0 while True: print n returnVal,frame=cam.read() img=cv2.GaussianBlur(frame, (5,5), 0) img=cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) blue_lower=np.array([150,150,0],np.uint8) blue_upper=np.array([180,255,255],np.uint8) blue=cv2.inRange(img,blue_lower,blue_upper) cv2.imshow('img',blue) n=n+1 key = cv2.waitKey(10) % 0x100 if key == 27: break #ESC 

Puedo detectar objetos rojos configurando las siguientes líneas:

 red_lower=np.array([0,150,0],np.uint8) red_upper=np.array([10,255,255],np.uint8) 

Cuando coloco una hoja de papel azul frente a mi cámara web con el primer código, solo aparece negro.

¿Puede alguien ayudarme a convertir RGB para colores azules en HSV?

Muchas gracias de antemano,

El azul se representa en HSV en un tono de alrededor de 240 grados de 360. El rango de Hue en OpenCV-HSV es 0-180, para almacenar el valor en 8 bits. Por lo tanto, el azul se representa en OpenCV-HSV como un valor de H alrededor de 240 / 2 = 120 .

Para detectar el azul correctamente, se podrían elegir los siguientes valores:

 blue_lower=np.array([100,150,0],np.uint8) blue_upper=np.array([140,255,255],np.uint8) 

Su modelo de color se establece por la línea:

  img=cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) 

Para usar Tono, Saturación y Valor, en lugar del predeterminado Azul, Verde, Rojo que OpenCV utiliza de forma predeterminada. Vea cómo funciona el modelo de color aquí .