Sergey777 0 Жалоба Опубликовано August 6, 2013 Всем привет! У меня задача найти объект на изображении. Использую cvMatchShapes и у меня часто получается что для совершенно не похожего визуально объекта результат меньше чем для похожего. Вот пример: Объект который я хочу найти: Изображение на котором хочу найти объект: Моя прога выдает что прямоугольник более подходящий вариант. Кто знает как это пофиксить ? Границы получаю по Canny потом нахожу контуры cvFindContours, дальше cvMatchShapes Исходный код: MatchShapes.cpp Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано August 7, 2013 лучше используйте новый opencv интерфейс там можно подавать просто std::vector, а не CvSeq. выведите для дебага контуры изображения может они неправильно находятся. еще может функция cvMatchShapes выдает не мин, а макс, хотя врядли. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Sergey777 0 Жалоба Опубликовано August 7, 2013 Функций cvMatchShapes возвращает минимум, если контуры совпадают пиксель в пиксель она возвращает 0. Контуры проверял отличаются не значительно, разница в 5 - 9 пикселей, соотношения линий контура в принципе подходят, по крайней мере разница с прямоугольником большая. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах