Как установить цветовой диапазон HSV в OpenCV?

У меня есть телефон, и это гистограмма HSV, похожая на удар, и я хочу отслеживать движение этого телефона. На основе его гистограммы я устанавливаю диапазон изображений следующим образом:

greenLower = (300, 0, 50)
greenUpper = (50, 128,250 )
cv2.inRange(hsv, greenLower, greenUpper)

Но ничего не было обнаружено при взмахе телефона, и я почти уверен, что это из-за неправильного цветового диапазона, не могли бы вы сказать мне, как правильно настроить цветовой диапазон? Особенно, когда значения HUE находятся между [300 ~ 50], я должен установите его на (50~300) или (300~50) из-за того, что оттенок является кругом.

Phone

Телефон

HSV histogram:

Гистограмма ВПГ


person Alex Luya    schedule 16.03.2017    source источник
comment
Как вы получили ВПГ? Кажется немного странным, что только насыщенность имеет значение с плавающей запятой от 0,0 до 1,0. | Ответ на вопрос о inRange можно получить, прочитав документацию. .   -  person Dan Mašek    schedule 16.03.2017


Ответы (1)


Вы неправильно установили верхнюю и нижнюю границы, они должны быть:

greenLower = (50, 0, 50)         # Previously (300, 0, 50)
greenUpper = (300, 128, 250)     # Previously (50, 128,250)

Также убедитесь, что hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) как OpenCV соответствует соглашению BGR.

ИЗМЕНИТЬ:

Чтобы сегментировать цвета в нескольких диапазонах 0~50 и 300~359, вы можете дважды выполнить cv2.inRange() для двух диапазонов:

greenLower1 = (0, 0, 20)         
greenUpper1 = (50, 128, 100)     

greenLower2 = (300, 0, 20)         
greenUpper2 = (359, 128, 100)     

mask1 = cv2.inRange(img_hsv, greenLower1, greenUpper1)
mask2 = cv2.inRange(img_hsv, greenLower2, greenUpper2)

mask = cv2.max(mask1, mask2)
person ZdaR    schedule 16.03.2017
comment
Тем не менее, ничего не было обнаружено. Будете ли вы предлагать соответствие значению оттенка в одном диапазоне 50–300 или в двух диапазонах 0–50 и 300–359? - person Alex Luya; 16.03.2017
comment
Он будет работать в диапазоне 50~300 и отлично работал на моей машине с вашим входным изображением. Правильно ли вы преобразовали входное изображение в HSV? - person ZdaR; 16.03.2017
comment
@ZdarR, спасибо, я преобразовал изображение в HSV, как вы предложили, и, согласно гистограмме, на самом деле диапазоны должны быть 0 ~ 50 и 300 ~ 359, и я просто не знаю, как объединить эти два в один. - person Alex Luya; 16.03.2017
comment
Обновлено @AlexLuya, но я предполагаю, что в ваших расчетах есть некоторая ошибка, так как результат остается прежним, потому что 300~359 не показывает никакого эффекта. Также ваша интенсивность колеблется от 0-255, но в случае HSV интенсивность колеблется от 0-100 - person ZdaR; 16.03.2017