Отслеживание белого цвета с помощью python opencv
Я хотел бы отслеживать белый цвет с помощью веб-камеры и python opencv. У меня уже есть код для отслеживания синего цвета.
_, 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)
что значения должен ли я давать как нижнюю границу, так и верхнюю границу для отслеживания белого цвета!!?? Я попытался изменить значения, и я получил другие цвета, но не повезло с белым цветом!!!
это значения HSV или значения BGR, указанные как нижняя и верхняя границы???
PS: Я должен получить последний результат как бинарное изображение для дальнейшей обработки!!
пожалуйста, помогите мне !!!
2 ответов
Я написал это для отслеживания белого цвета :
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()
Я пытался отслеживать белый экран моего телефона и получил это :
вы можете попробовать изменить значения HSV Вы также можете попробовать цветовое пространство HSL, как сказал легат, это было бы более точно
давайте взглянем на цветовое пространство HSV:
вам нужен белый, который находится близко к центру и довольно высок. Начать с
sensitivity = 15
lower_white = np.array([0,0,255-sensitivity])
upper_white = np.array([255,sensitivity,255])
а затем настройте порог в соответствии с вашими потребностями.
вы можете также рассмотрите возможность использования HSL цветовое пространство, которое обозначает оттенок, насыщенность,легкость. Тогда вам нужно будет только смотреть на легкость для обнаружения белого и распознавания других цветов, будет оставаться легким. Оба HSV и HSL держат подобные цветы близко. Также HSL, вероятно, окажется более точным для обнаружения белого-вот почему: