2017-01-25 9 views
0

Я построил простой алгоритм обнаружения визуальной метки с помощью OpenCV на Python, который использует их детектор ORB в качестве второго шага. Я использую ORB с BFmatcher, код заимствован из этого проекта: https://rdmilligan.wordpress.com/2015/03/01/road-sign-detection-using-opencv-orb/ Часть обнаружения в коде выглядит следующим образом:Точное положение совпадения с совпадением ORB OpenCV

# find the keypoints and descriptors for object 
kp_o, des_o = orb.detectAndCompute(obj,None) 
if len(kp_o) == 0 or des_o == None: continue 

# match descriptors 
matches = bf.match(des_r,des_o) 

Затем происходит проверка на количество полнометражных матчей, так что он может сказать если между образцом шаблона и запросом есть совпадение. Вопрос: если да, как мне получить точную позицию и угол поворота найденного совпадения?

+0

вычислить гомографию и разложить ее. – Micka

ответ

0

Позиция на этом этапе уже известна. Он хранится в переменных x и y. Чтобы найти поворот, размывайте как шаблон, так и источник, либо генерируйте 360 развернутых представлений размытого шаблона, а затем найдите тот, который имеет наименьшую разницу с интересующей областью или преобразует оба изображения в полярные координаты и попытается сместить один из изображения для достижения наилучшей математики (сдвиг будет углом, на который вы хотите повернуть).

+0

Какие значения X и Y вы точно имеете в виду? Кроме того, сравнение вращения похоже на повторение матча, которое выглядит несколько избыточным. – Nolemocius

+0

Попробуйте запустить программу, в которой вы указали ссылку и проверите значения переменных 'x' и' y' во время выполнения. –