У меня есть приложение, в котором я должен обнаружить наличие некоторых предметов в сцене. Элементы можно вращать и немного масштабировать (больше или меньше). Я пытался использовать ключевые детекторы, но они не достаточно быстрые и точные. Поэтому я решил сначала обнаружить ребра в шаблоне и области поиска, используя Canny (или более быстрое обнаружение ребер al go), а затем сопоставить ребра, чтобы найти положение, ориентацию и размер найденного соответствия.
Все это нужно сделать менее чем за секунду.
Я пытался использовать matchTemplate()
и matchShape()
, но первый НЕ масштабируется и не зависит от вращения, а второй плохо работает с реальными изображениями. Поворот изображения шаблона для соответствия также занимает много времени.
До сих пор мне удавалось обнаружить края шаблона, но я не знаю, как сопоставить их со сценой.
Я уже прошел через следующее, но не смог заставить их работать (они либо используют старую версию OpenCV, либо просто не работают с другими изображениями, кроме тех, что в демоверсии):
https://www.codeproject.com/Articles/99457/Edge-Based-Template-Matching
Сопоставление инварианта углов и масштабов с использованием OpenCV
https://answers.opencv.org/question/69738/object-detection-kinect-depth-images/
Может кто-нибудь предложить мне подход для этого? Или, если возможно, код для того же самого кода?
Это мой пример входного изображения (детали, которые нужно обнаружить, отмечены красным)
Вот некоторые программы, которые делают это, а также то, как я хочу, чтобы это было: