Каковы рекомендуемые цветовые пространства для определения оранжевого цвета в открытом резюме?
Мне нужно подходящее цветовое пространство для определения оранжевого цвета над очень похожими цветами, такими как красный и желтый. Я уже пробовал некоторые цветовые пространства, такие как:RGB HSV и YUV, но объект, который я хочу обнаружить, меняет свое положение, что означает изменение освещения окружающей среды. Со временем это моя главная проблема.
2 ответа
HSV - хорошее цветовое пространство для определения цвета. Это цветовая карта hsv для справки:
Ось X представляет оттенок в [0,180), ось Y1 представляет насыщенность в [0,255], ось Y2 представляет S = 255, в то время как V = 255.
Чтобы найти цвет, обычно просто ищите диапазон H и S и установите v в диапазоне (20, 255).
Например:
- обнаружить оранжевый
Подробности из моего другого ответа: Выбор правильной верхней и нижней границ ВПГ для определения цвета с помощью `cv::inRange` (OpenCV)
Чтобы найти оранжевый цвет, мы ищем карту и находим наилучший диапазон: H:[10, 25], S: [100, 255] и V: [20, 255]. Таким образом, маска cv2.inRange(hsv,(10, 100, 20), (25, 255, 255))
#!/usr/bin/python3
# 2018.01.21 20:46:41 CST
import cv2
img = cv2.imread("test.jpg")
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
mask = cv2.inRange(hsv,(10, 100, 20), (25, 255, 255) )
cv2.imshow("orange", mask);cv2.waitKey();cv2.destroyAllWindows()
Результат:
- определить зеленый / желтый / синий
- обнаружить два разных цвета
Как обнаружить два разных цвета, используя `cv2.inRange` в Python-OpenCV?
Случайный выбор цветовой системы может быть не лучшим подходом.
Более систематический подход мог бы заключаться в рассмотрении цветовой гистограммы, такой как ниже, которая показывает все пиксели изображения в кубе RGB.
Затем вы заполняете эту гистограмму образцами оранжевого цвета, взятыми из различных изображений, таким образом, чтобы покрыть все "апельсины", о которых вы думаете.
Это ограничит область в пространстве RGB, а форма области подскажет вам наиболее подходящую цветовую систему, зная, как другие цветовые системы отображаются на куб. Например, HLS может быть представлен в виде биконуса или бипирамиды с его осями вдоль главной диагонали куба.
Правда, это сложная задача.