В настоящее время я использую HaarCascade для обнаружения лица на картинке. Что работает, я получаю право на то, где лицо.
Теперь я хочу получить "среднее"? (цвет кожи) в этом прямоугольнике. И используйте это как основу для цветового диапазона для поиска другого скина на фотографии. Как мне это сделать?
Я нашел функцию inRange, которая ищет цвет в диапазоне. Но я не совсем уверен, как я могу получить средний цвет моей кожи. Кажется, что функция inRange нуждается в значениях HSV? Однако я не знаю, что это за формат. Это не похоже на HSB в Photoshop. (Что я пробовал для "целей тестирования").
Мой вопрос сводится к этому, как я могу получить "средний" цвет в прямоугольнике и найти другие цвета в этом диапазоне (например, светлее и темнее, чем этот цвет, но тот же оттенок).
Благодарю.
Получите трехмерную гистограмму цвета в пределах обнаруженной области, представляющей интерес. То есть, не три гистограммы 1D для каждого канала, а одна трехмерная гистограмма для всех трех каналов вместе. У OpenCV calcHist есть варианты для этого. Вот пример, который делает это. В этом примере используются привязки Python для OpenCV, но он показывает, как установить параметры.
Кроме того, установите диапазон гистограммы в пределах разумного диапазона для цвета кожи. Как предположил MSalters в комментариях, HSV - лучшее цветовое пространство для подобных вещей. Возможно, вы можете игнорировать каналы S и V, и только 1D гистограмма для V. Try отсутствует.
Бук с самым высоким счетом будет вашим "средним" цветом кожи.