2015-03-20 4 views
3

Я занимаюсь многими учебными материалами и примерами для OpenCV, в основном для обнаружения и извлечения функций.OpenCV обнаруживает несколько экземпляров элемента

Я использую C++, Visual Studio 2012 и открываю CV 2.4.11.

Моя конечная цель - обнаружить, идентифицировать и подсчитать ящики зерновых на полке. Представьте себе, что есть две коробки Cheerios, одна коробка кукурузных хлопьев и три коробки Froot Loops. Я хочу идентифицировать и подсчитать предметы.

Я нашел пример и выполнил небольшой тест с использованием автомобильных логотипов. Мой логотип шаблона для производителя Opel. У меня есть тестовое изображение, в котором есть полдюжины автомобильных логотипов, в том числе два экземпляра логотипа Opel, измененные и повернутые. На изображении ниже показаны результаты (я вручную рисовал оранжевые круги вокруг двух логотипов Opel на тестовом изображении).

match

Два теста Opel Logos имеют более дескрипторов матчей, чем любой из матчей на другой Логоса. Я застрял в том, как я могу сгруппировать матчи и признать, что два логотипа Opel верны и игнорируют остальные.

Должен быть стандартный способ сделать это, но мои поиски его не нашли.

Может кто-нибудь указать мне в правильном направлении - возможно, на пример или на функции OpenCV, на которые я должен смотреть?

+0

Интересно. Интересно, может ли что-то вроде k-средств помочь подсчитать количество совпадающих точек в кластере. –

+2

dont использовать только лучшее соответствие для каждой функции, но n лучших совпадений. затем используйте некоторые преобразования ransac (жесткие/аффинные/перспективные), чтобы найти правильные кластеры. – Micka

+0

Можете ли вы предоставить изображения, которые используете? – zedv

ответ

0

Template matching в opencv более подходящий метод для вашего алго.

Другой метод - обучение каскаду haar, где вам нужно предоставить только один положительный образец логотипа i.e.

Смежные вопросы