Кто-нибудь может использовать функцию openPV 3.0 recoverPose с хорошими результатами? У меня есть:openCV 3.0 recoverPose ошибочные результаты
cv::Mat r;
cv::Mat t;
cv::Mat E = cv::findEssentialMat(features1, features2);
cv::recoverPose(E, features1, features1, r, t);
float xAngle = radToDeg(atan2f(r.at<float>(2, 1), r.at<float>(2, 2)));
float yAngle = radToDeg(atan2f(-r.at<float>(2, 0), sqrtf(r.at<float>(2, 1) * r.at<float>(2, 1) + r.at<float>(2, 2) * r.at<float>(2, 2))));
float zAngle = radToDeg(atan2f(r.at<float>(1, 0), r.at<float>(0, 0)));
Как вход я использую одно изображение 1836x1836 размеры и другое изображение 1836x1836, которое просто повернута на 90 градусов влево. Я повернул его с помощью компьютерной программы, так что он точно вращается на 90 градусов.
Я ожидаю результат:
xAngle: 0
yAngle: 0
zAngle: 90 (or -90 depending on Z direction)
К сожалению, мои результаты:
xAngle: 90
yAngle: 0.113659
zAngle: 180
Может кто-нибудь помочь мне с этим?
В режиме восстановления вы передаете функции1 вместо функций2. – Ruturaj