В руководстве по OpenCV для функции phase () (и, таким образом, функции cartToPolar ()) говорится, что он возвращает угол поворота для градиентов x и y в диапазоне 0–360 градусов (с параметром TRUE), используя уравнение
atan2(y(i),x(i)) * 180/pi
Однако, применяя вручную для некоторых случайных значений x / y-градиентов и используя то же самое уравнение выше, я получаю результаты со значениями со знаком
Пример:
Gx = 46 и Gy = -22
atan2 (-22/46) * 180 / 3,14 = -25,572929
в то время как результаты с использованием фазы () = 334,437073
Да, они под одним углом, но я бы хотел сохранить знак (если это возможно), используя функции и не используя ручные итерации. Есть ли функция (или хитрость), чтобы сделать это в OpenCV? Спасибо 🙂
Похоже, я не смог найти функцию в OpenCV, которая делает трюк.
Однако единственное, что мне осталось, — это использовать цикл и применить
if (angle>180) {
angle = angle-360;
}
Других решений пока нет …