gpt4 book ai didi

c++ - 从标记的姿势相机的姿势

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:40:40 25 4
gpt4 key购买 nike

我目前正在执行一项使用计算机视觉定位车辆的任务。我正在使用 OpenCVC++。我实现了 ArUco 标记来获取放置在车辆上的相机的姿势。

我使用以下函数来估计标记的姿势:

cv::aruco::estimatePoseSingleMarkers(markerCorners, markerLength, camMatrix, distCoeffs, rvecs,tvecs)

后来我发现rvecstvecs是1x1的3 channel 数组(openCVDataType=CV_8UC3)

现在,我从 cv::Rodrigues 函数得到 R(3x3) 矩阵说它是 Ri。

为了将相机的姿势w.r.t标记为标记,经过大量研究后我发现必须进行逆变换。如果 Ri 我得到逆。

现在要获得平移 vector 的逆,它只是将上述逆与平移 vector (tvecs) 相乘。

我是 c++ 的新手,我的问题是:

  1. 我的方法是否正确地找到相机 w.r.t 标记的姿势?
  2. 我无法将 tvecs 更改为 mat 对象,以免出现乘法错误。

最佳答案

方法estimatePoseSingleMarkers 使用cv::solvePnP内的方法。这就是为什么您接下来需要执行相机姿态估计的原因:

Mat R;
cv::Rodrigues(rvec, R); // calculate your object pose R matrix

camR = R.t(); // calculate your camera R matrix

Mat camRvec;
Rodrigues(R, camRvec); // calculate your camera rvec

Mat camTvec= -camR * tvec; // calculate your camera translation vector

看来符合你的猜测

关于c++ - 从标记的姿势相机的姿势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51476702/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com