python opencv image-processing threshold

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



image-processing threshold (1)

Actualización :

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

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

Respuesta original :

  1. Convertir a espacio de color HSV ,
  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:

Las regiones verdes enmascaradas:

Más pasos:

El código fuente central:

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. Elección de los límites de HSV superiores e inferiores correctos para la detección de color con `cv :: inRange` (OpenCV)

Esta pregunta ya tiene una respuesta aquí:

Solo quiero detectar solo objetos verdes de una imagen capturada en un entorno natural. ¿Cómo definirlo? Porque aquí quiero pasar el valor umbral, digamos ''x'', al usar esta x quiero obtener solo objetos de color verde en un color (blanco), otros deben aparecer en otro color (negro). Por favor, guíame para hacerlo esta. gracias por adelantado.