opencv image-processing computer-vision color-detection

¿Cómo detectar parches de colores en una imagen usando OpenCV?



image-processing computer-vision (1)

Procesar la imagen colorida en el HSV color-space es una buena dirección. Y divido los canales y encuentro que el canal S es genial. Porque S es Saturation(饱和度) de color.

Luego umbral de la S con un umbral de 100 , obtendrá esto.

Será fácil separar la región colorida en la imagen binaria trillada.

Como sugiere @Mark, podemos usar un umbral adaptable que no sea el fijo. Entonces, agregue THRESH_OTSU en las banderas.

El código central de Python se presenta de la siguiente manera:

##(1) read into bgr-space img = cv2.imread("test.png") ##(2) convert to hsv-space, then split the channels hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) h,s,v = cv2.split(hsv) ##(3) threshold the S channel using adaptive method(`THRESH_OTSU`) th, threshed = cv2.threshold(s, 100, 255, cv2.THRESH_OTSU|cv2.THRESH_BINARY) ##(4) print the thresh, and save the result print("Thresh : {}".format(th)) cv2.imwrite("result.png", threshed) ## >>> Thresh : 85.0

Respuestas relacionadas:

  1. Detectar segmento coloreado en una imagen
  2. Detección de bordes en Android OpenCV
  3. OpenCV C ++ / Obj-C: detección de una hoja de papel / detección cuadrada

Estoy tratando de detectar si la imagen (dibujo en blanco y negro) está coloreada o no en las condiciones de la habitación con una cámara móvil.

He podido obtener este resultado

usando el siguiente código

Mat dest = new Mat (sections[i].rows(),sections[i].cols(),CvType.CV_8UC3); Mat hsv_image = new Mat (sections[i].rows(),sections[i].cols(),CvType.CV_8UC3); Imgproc.cvtColor (sections[i],hsv_image,Imgproc.COLOR_BGR2HSV); List <Mat> rgb = new List<Mat> (); Core.split (hsv_image, rgb); Imgproc.equalizeHist (rgb [1], rgb [2]); Core.merge (rgb, sections[i]); Imgproc.cvtColor (sections[i], dest, Imgproc.COLOR_HSV2BGR); Core.split (dest, rgb);

¿Cómo puedo saber si la imagen está coloreada o no? El color puede ser cualquiera y tiene condiciones ambientales. Por favor, ayúdame en esto ya que soy principiante.

Gracias