使用 Aruco 标记获取摄像机位置和旋转



我使用函数cv.aruco.estimatePoseSingleMarkers()来获取rvectvec。 使用这两个矢量,如何获得相对于 Aruco 标记的相机姿势?

while (True):
ret, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
aruco_dict = aruco.Dictionary_get(aruco.DICT_ARUCO_ORIGINAL)
parameters = aruco.DetectorParameters_create()
corners, ids, rejectedImgPoints = aruco.detectMarkers(gray, aruco_dict, parameters=parameters)
font = cv2.FONT_HERSHEY_SIMPLEX 
if np.all(ids != None):
# POSE ESTIMATION
rvec, tvec,_ = aruco.estimatePoseSingleMarkers(corners[0], 0.1, mtx, dist) 

rvec是标记相对于相机帧的旋转。您可以使用内置的罗德里格斯函数将rvec转换为旋转矩阵。然后得到这个矩阵的逆矩阵(这是一个旋转矩阵,所以逆矩阵是矩阵的转置(。这是相机相对于标记的旋转。

tvec的大小不受旋转的影响。如果您需要考虑相机相对于标记的方向,只需取tvec的负数。

最新更新