Я новичок в OpenCV (на самом деле я использую оболочку Emgu CV С#) и пытаюсь выполнить обнаружение некоторых объектов.
Я пытаюсь определить, соответствует ли объект заранее определенному набору объектов (который мне придется определить). Фон хорошо освещен и не двигается. Мои объекты, с которых я начинаю, это бутылки и банки.
Мой текущий подход: сделайте absDiff с ранее сделанным фоновым изображением, чтобы отделить фон. Затем расширьте в 4 раза, чтобы светлые области (на этикетках) уменьшились. Затем я делаю бинарный порог, чтобы получить большой блог, после чего нахожу контуры на этом изображении. Затем я беру самый большой контур и рисую его, который становится моей формой, чтобы либо сохранить в принятый набор, либо сравнить с принятым набором.
В настоящее время я использую cvMatchShapes, но двойное возвращаемое значение, похоже, сильно различается. Я предполагаю, что это потому, что он не учитывает вращение.
Является ли этот подход хорошим? Это не работает для стеклянных бутылок, так как трудно найти края...
Я читал о классификаторах хаара, но подумал, что это может быть излишним для моей задачи.