Je veux juste détecter uniquement les objets verts d'une image capturée en milieu naturel, comment la définir? Parce que ici, je veux passer la valeur de seuil, disons 'x', en utilisant ce x, je veux obtenir uniquement des objets de couleur verte dans une couleur (blanc), les autres doivent apparaître dans une autre couleur (noir) Veuillez me guider pour faire cette. Merci d'avance.
Mise à jour :
Je crée une palette de couleurs HSV
. C'est more easy and accurate
Pour trouver la gamme de couleurs en utilisant cette carte qu'auparavant.
Et peut-être que je devrais changer utiliser (40, 40,40) ~ (70, 255,255) in hsv
Pour trouver le green
.
Réponse originale :
HSV
espace colorimétrique,cv2.inRange(hsv, hsv_lower, hsv_higher)
pour obtenir le masque vert.Nous utilisons the range (in hsv)
: (36,0,0) ~ (86,255,255)
Pour ce sunflower
.
L'image source:
Les régions vertes masquées:
Plus d'étapes:
Le code source principal:
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)
Similaire: