Обнаружение цветового диапазона от «среднего» в OpenCV

В настоящее время я использую HaarCascade для обнаружения лица на изображении. Что работает, я получаю прямоугольник, где лицо.

Теперь я хочу получить «средний?» (цвет кожи) в этом прямоугольнике. И используйте это в качестве основы для цветовой гаммы для поиска другой кожи на фотографии. Как я должен идти об этом?

Я нашел функцию inRange, которая ищет цвет в диапазоне. Но я не совсем уверен, как я мог получить средний цвет моей кожи там. Кажется, что функции inRange нужны значения HSV? Однако я не знаю, что это за формат. Это не похоже на HSB в фотошопе. (Который я пробовал в «целях тестирования»).

Мой вопрос сводится к тому, как я могу получить «средний» цвет в прямоугольнике и найти другие цвета в этом диапазоне (например, светлее и темнее, чем этот цвет, но с тем же оттенком).

Благодарю.

0

Решение

Получите трехмерную цветную гистограмму в пределах обнаруженной области интереса. То есть не три одномерные гистограммы для каждого канала, а одна трехмерная гистограмма для всех трех каналов вместе. OpenCV-х calcHist есть варианты для этого. Вот пример который делает это. В этом примере используются привязки Python для OpenCV, но в нем показано, как установить параметры.

Кроме того, установите диапазон гистограммы в пределах разумного диапазона для цвета кожи. Как предложил MSalters в комментариях, HSV — лучшее цветовое пространство для таких вещей. Возможно, вы можете не обращать внимания на каналы S и V и выполнять только 1-мерную гистограмму для V. Попытка отсутствует.

Контейнер с наибольшим количеством будет вашим «средним» цветом кожи.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]