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

0

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

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

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

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

Благодарю.

  • 0
    HSL и HSV . HSV и HSB являются синонимами.
  • 0
    Довольно сложно. Имейте в виду, что могут быть тени от черт лица, которые влияют на точный цвет. Преимущество моделей HSV / HSL заключается в том, что тени на самом деле не влияют на H, тогда как они влияют на все R, G и B.
Теги:
opencv
computer-vision
skin

1 ответ

0
Лучший ответ

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

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

Бук с самым высоким счетом будет вашим "средним" цветом кожи.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню