python - 使用 Aruco 标记获取相机位置和旋转

标签 python opencv camera 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 是标记相对于相机框架的旋转。您可以使用内置 Rodrigues function 将 rvec 转换为旋转矩阵。然后得到这个矩阵的逆(这是一个旋转矩阵,所以逆就是矩阵的转置)。这是相机相对于标记的旋转。

tvec 的幅度不受旋转的影响。如果您需要考虑相机相对于标记的方向,只需取 tvec 的负值即可。

关于python - 使用 Aruco 标记获取相机位置和旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57577975/

相关文章:

python - 使用Python复制目录结构

c++ - 使用 C++ REST SDK 将图像从 OpenCV 3 发送到 Cognitive Face API

python - 函数adaptiveThreshold中的CV_8UC1(错误215)

python - 最新的 'pip' 失败,出现 "requires setuptools >= 0.8 for dist-info"

python - 管道发送和接收。 unpack 需要长度为 4 的字符串参数

image - 使用openCV从ROS处理深度图像消息

camera - 是否可以在没有 "tap to accept"的情况下使用 Google Glass 拍照?

python - OpenCV的Python/Kivy相机小部件错误

c++ - 如何在应用颜色校正之前线性化输入图像?

python - 使用 python-opencv 的水平和垂直边缘轮廓