使用 Aruco Marker 获取相机位置和旋转

3
我使用了函数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) 
1个回答

4

rvec 是标记相对于相机框架的旋转。您可以使用内置的Rodrigues函数rvec转换为旋转矩阵。然后获取该矩阵的逆矩阵(这是一个旋转矩阵,因此逆矩阵是矩阵的转置)。这是相机相对于标记的旋转。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接