gpt4 book ai didi

python - Aruco 标记世界坐标

转载 作者:太空宇宙 更新时间:2023-11-03 21:07:35 43 4
gpt4 key购买 nike

我一直在使用 Python 的 OpenCV 库,使用 ArUco 进行对象跟踪。

目标是获取 ArUco 标记中心的 x/y/z 坐标,以及相对于校准相机的角度。

我能够使用目前的代码在 aruco 标记上显示轴,但无法找到如何从旋转和平移向量中获取 x/y/z 坐标(如果这甚至是正确的方法) ).

这是定义旋转/平移向量的代码行:

rvec, tvec, _ = aruco.estimatePoseSingleMarkers(corners, markerLength, camera_matrix, dist_coeffs) # For a single marker

关于如何在相机世界中获取角度/标记位置的任何想法?

谢谢!

最佳答案

经过一番磨难,我发现aruco中的x和y坐标可以通过角点的平均值来确定:

x = (corners[i-1][0][0][0] + corners[i-1][0][1][0] + corners[i-1][0][2][0] + corners[i-1][0][3][0]) / 4
y = (corners[i-1][0][0][1] + corners[i-1][0][1][1] + corners[i-1][0][2][1] + corners[i-1][0][3][1]) / 4

并且相对于相机的角度可以通过旋转向量的Rodrigues来确定,矩阵必须先填充

rotM = np.zeros(shape=(3,3))
cv2.Rodrigues(rvec[i-1], rotM, jacobian = 0)

最后对旋转矩阵进行RQ Decompose即可得到yaw pitch和roll

ypr = cv2.RQDecomp3x3(rotM)

关于python - Aruco 标记世界坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51270649/

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