Я пытаюсь распознать объект в изображении из ранее сохраненного контура одного и того же объекта.OpenCV полное вращение от моментов?
Имея огромные проблемы с обнаружением объектов (у моих объектов нет никаких функций, по крайней мере, не у всех), у меня получились намного лучшие результаты с функцией matchShapes(), которая, по-видимому, использует моменты Ху ,
Когда я нашел мою сопрягая форму, я получаю его вращение от сравнения его главной оси с осью х, в соответствии с этим ответом: Find the orientation of an image
Однако это дает лишь вращение между -90 и 90 градусов. Мне нужно знать, поворачивается ли объект на 180 градусов или нет. Я привел несколько иллюстраций для иллюстрации моей проблемы:
Эти два изображения показывают примерно одинаковый угол, когда они должны быть на 180 градусов друг от друга. Есть ли очевидный способ расчета их полного вращения? Я что-то упустил? Я пробовал несколько хакерских методов, но ни один из них не достаточно надежный.
Любая помощь или предложения были бы весьма признательны. Благодаря!
Спасибо! Я попробую. Могу ли я использовать функцию absDiff() уже в openCV для этого? – user1547040
Несомненно, определенно стоит того. Будет быстрее, чем сумма квадратов различий. – Zaphod
Я продолжу это завтра, но я подумал об этом. Прежде всего, разве это не требует, чтобы фигуры имели равное количество очков? Если они не одинаковы, следует ли удалять очки? Откуда? Разве не нужно сортировать очки для этого? Они? У меня также была другая идея для этой проблемы, где я сравнивал расстояния в центре. Я проверил, был ли центроид контура ближе к центрированному центру, чем центр. Самая большая проблема заключалась в том, что фигуры должны быть точно друг на друга, чтобы они работали. Иллюстрируется здесь: http://hascanvas.com/resolveorientationdirection – user1547040