如何从OpenCV rvecs计算旋转角度

How to calculate the rotated angle from OpenCV rvecs

本文关键字:旋转 计算 rvecs OpenCV      更新时间:2023-10-16

我正在使用aruco标记来获取机器人的位置。从估计姿势单标记中获取姿势后,我获得了给定标记的 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;
}
首先从

旋转矢量(rvec)中获取旋转矩阵,然后取欧拉角,从而获得标记相对于相机的旋转。此处给出了将旋转矩阵转换为欧勒角