Как рассчитать угол поворота из OpenCV rvecs

Я использую маркеры aruco, чтобы определить местоположение робота. После получения позы с помощью эстимейта PoseSingleMarkers я получаю rvecs и tvecs для данного маркера. Из этого, как я мог получить повернутый угол маркера вокруг каждой оси.

я использовал код ниже, чтобы обнаружить и нарисовать маркеры aruco вместе с его осью

while(true)
{
vector< vector<Point2f>> corners; //All the Marker corners
vector<int> ids;

cap >> frame;
cvtColor(frame, gray, CV_BGR2GRAY);

aruco::detectMarkers(gray, dictionary, corners, ids);
aruco::drawDetectedMarkers(frame,corners,ids);
aruco::estimatePoseSingleMarkers(corners, arucoMarkerLength, cameraMatrix, distanceCoefficients, rvecs, tvecs);

for(int i = 0; i < ids.size(); i++)
{
aruco::drawAxis(frame, cameraMatrix, distanceCoefficients, rvecs[i], tvecs[i], 0.1f);
}

imshow("Markers", frame);
int key = waitKey(10);
if((char)key == 'q')
break;
}

0

Решение

Вращение маркера относительно камеры было получено, сначала взяв матрицу вращения из вектора вращения (rvec), а затем взяв угол Эйлера.
Преобразование матрицы вращения в углы Евлера приведено здесь

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector