сравнить два изображения с помощью OpenCV - PullRequest
3 голосов
/ 31 января 2011

Я хочу сравнить два изображения, используя OpenCV.Могу ли я отфильтровать ближайший результат сопоставления среди других наборов обучающих данных ..?
Пример: База данных, содержащая тренировочное изображение, показывающее номер 5 при использовании одной рукой.

Можно ли сопоставить кого-то другого, такой же знакс этим тренировочным имиджем ..?Использование OpenCV.Пожалуйста, помогите мне.

Ответы [ 2 ]

3 голосов
/ 31 января 2011

Как сказал Синелав, не существует простого, простого решения в целом .

Однако я могу придумать один простой способ, который бы работал для вашего конкретного примера .

  • Обнаружение областей, соответствующих коже человека на изображении.Это предполагает, что человек не носит перчатки (если они есть, знание цвета перчаток поможет).См. этот пример по обнаружению кожи.По сути, вы конвертируете свое изображение в YUV и порог, используя цветность, потому что известно, что человеческая кожа занимает лишь небольшую часть спектра цветности, независимо от расы
  • Обнаружение контуров.В OpenCV это делается с помощью функции cvFindContours.Вот пример этой функции, используемой для поиска эллипсов.Вас интересуют контуры любой формы, а не только эллипсы в этой точке.
  • Теперь, просмотрите все ваши контуры и найдите контур, который выглядит как открытая рука, дающая сигнал 5.Это не так сложно, как звучит, потому что вы ищете выпуклый корпус (красный контур) с 4-5 дефектами выпуклости (черные стрелки):

convexity defects

  • Изображение выше из OpenCV API описания функции cvConvexityDefects.Прочтите его описание для получения информации о том, как оно используется.
  • Как только у вас будет выпуклая оболочка, проверьте размер дефектов.4 из них должны быть примерно одинакового размера (потому что пальцы одинаковой длины).Если это так, у вас есть открытая рука, которая дает вам пять.
1 голос
/ 31 января 2011

См. Мой ответ на этот вопрос - простого и простого решения не существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...