web-dev-qa-db-fra.com

Suivi de la couleur blanche à l'aide de python opencv

Je voudrais suivre la couleur blanche en utilisant la webcam et python opencv. J'ai déjà le code pour suivre la couleur bleue.

_, frame = cap.read()
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

# define range of blue color in HSV
lower_blue = np.array([110,100,100])
upper_blue = np.array([130,255,255])

#How to define this range for white color


# Threshold the HSV image to get only blue colors
mask = cv2.inRange(hsv, lower_blue, upper_blue)
# Bitwise-AND mask and original image
res = cv2.bitwise_and(frame,frame, mask= mask)

cv2.imshow('frame',frame)
cv2.imshow('mask',mask)
cv2.imshow('res',res)

quelles valeurs dois-je donner comme borne inférieure et borne supérieure pour suivre la couleur blanche !! ?? J'ai essayé de changer les valeurs et j'ai eu d'autres couleurs mais pas de chance avec la couleur blanche !!!

est-ce que les valeurs HSV ou BGR spécifiées comme limites inférieures et supérieures ???

PS: je dois obtenir le dernier résultat sous forme de image binaire pour un traitement ultérieur !!

Aidez-moi, s'il vous plaît !!!

18
user3429616

J'ai écrit ceci pour suivre la couleur blanche:

import cv2
import numpy as np

cap = cv2.VideoCapture(0)

while(1):

    _, frame = cap.read()
    hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

    # define range of white color in HSV
    # change it according to your need !
    lower_white = np.array([0,0,0], dtype=np.uint8)
    upper_white = np.array([0,0,255], dtype=np.uint8)

    # Threshold the HSV image to get only white colors
    mask = cv2.inRange(hsv, lower_white, upper_white)
    # Bitwise-AND mask and original image
    res = cv2.bitwise_and(frame,frame, mask= mask)

    cv2.imshow('frame',frame)
    cv2.imshow('mask',mask)
    cv2.imshow('res',res)

    k = cv2.waitKey(5) & 0xFF
    if k == 27:
        break

cv2.destroyAllWindows()

J'ai essayé de suivre l'écran blanc de mon téléphone et j'ai obtenu ceci:

enter image description here

Vous pouvez essayer de changer les valeurs HSV Vous pouvez également essayer l'espace colorimétrique HSL comme l'a dit Legat, ce serait plus précis

13
Vipul

Jetons un coup d'œil à l'espace colorimétrique HSV:

enter image description here

Vous avez besoin de blanc, qui est proche du centre et assez haut. Commencer avec

sensitivity = 15
lower_white = np.array([0,0,255-sensitivity])
upper_white = np.array([255,sensitivity,255])

puis ajustez le seuil à vos besoins.

Vous pouvez également pensez à utiliser HSL espace colorimétrique, qui signifie Teinte, Saturation, Luminosité. Ensuite, il vous suffirait de regarder la légèreté pour détecter le blanc et reconnaître les autres couleurs resterait facile. HSV et HSL gardent des couleurs similaires proches. HSL s'avérerait également plus précis pour détecter le blanc - voici pourquoi:

enter image description here

33
Legat