我使用了cv.aruco.estimatePoseSingleMarkers()
函数来获取rvec
和tvec
。
使用这两个 vector ,如何获得相对于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
是标记相对于相机框架的旋转。您可以使用内置的Rodrigues function将rvec
转换为旋转矩阵。然后获得该矩阵的逆矩阵(这是一个旋转矩阵,因此逆矩阵是矩阵的转置)。这是摄像机相对于标记的旋转。tvec
的大小不受旋转的影响。如果需要考虑摄像机相对于标记的方向,只需取tvec
的负数即可。
关于python - 使用Aruco标记获取相机位置和旋转,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57577975/