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