Cómo definir un valor de umbral para detectar solo los objetos de color verde en una imagen: Opencv

Solo quiero detectar objetos verdes de una imagen capturada en un entorno natural. ¿Cómo definirla? Porque aquí quiero pasar el valor de umbral, digamos ‘x’, al usar esta x quiero obtener solo objetos de color verde en un color (blanco), los demás deben aparecer en otro color (negro). esta. gracias por adelantado.

Actualización :

Hago un mapa de colores de HSV . Es more easy and accurate encontrar el rango de colores en este mapa que antes.

Y tal vez debería cambiar el uso (40, 40,40) ~ (70, 255,255) in hsv para encontrar el green .

introduzca la descripción de la imagen aquí


Respuesta original :

  1. Convertir a HSV espacio de color,
  2. Use cv2.inRange(hsv, hsv_lower, hsv_higher) para obtener la máscara verde.

Utilizamos the range (in hsv) : (36,0,0) ~ (86,255,255) para este sunflower .


La imagen de origen:

introduzca la descripción de la imagen aquí

Las regiones verdes enmascaradas:

introduzca la descripción de la imagen aquí

Más pasos:

introduzca la descripción de la imagen aquí


El código fuente del núcleo:

 import cv2 import numpy as np ## Read img = cv2.imread("sunflower.jpg") ## convert to hsv hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) ## mask of green (36,25,25) ~ (86, 255,255) # mask = cv2.inRange(hsv, (36, 25, 25), (86, 255,255)) mask = cv2.inRange(hsv, (36, 25, 25), (70, 255,255)) ## slice the green imask = mask>0 green = np.zeros_like(img, np.uint8) green[imask] = img[imask] ## save cv2.imwrite("green.png", green) 

Similar:

  1. Elegir los límites HSV superiores e inferiores correctos para la detección de color con `cv :: inRange` (OpenCV)