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 :
-
Convertir a espacio de color
HSV
, -
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:
Esta pregunta ya tiene una respuesta aquí:
- OpenCV Android Green Color Detection 1 respuesta
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.