我目前正在使用计算机视觉定位车辆的任务。我正在使用C++
和OpenCV
。我实现了ArUco标记来获取放置在车辆上的相机的姿态。
我使用以下函数来估计标记的姿态:
cv::aruco::estimatePoseSingleMarkers(markerCorners, markerLength, camMatrix, distCoeffs, rvecs,tvecs)
后来我发现,rvecs
和tvecs
是三通道的1x1数组,(openCVDataType=CV_8UC3)
。
现在,我从cv :: Rodrigues
函数中获得了一个R(3x3)矩阵,假设它是Ri。
为了得到相机相对于标记的姿态,在经过大量研究后,我发现必须采取逆变换。我得到了Ri的逆变换。
现在,要想得到翻译向量的逆变换,只需将上述逆变换与翻译向量(tvecs)相乘即可。
我对c++还比较新,我的问题是:
- 我的方法正确吗,以找到相机相对于标记的姿态?
- 我无法将
tvecs
更改为mat
对象,以避免乘法错误。