我solvePnP()
用来获取 3D 形状的旋转矩阵,根据某些来源,它是一个 3x3 矩阵。就我而言,我得到一个向量(3x1)。我做错了什么还是格式取决于我的相机矩阵,dist coeffs,等等?我正在使用这条线:
(success, rotation_vector, translation_vector) = cv2.solvePnP(model_points, image_points,camera_matrix, dist,flags=cv2.SOLVEPNP_ITERATIVE)
我在形状中使用 5 个 image_points 和 object_points((x,y)用于 2D 点,(x,y,z)用于 3D 点,z=0,因为表面是平坦的),相机矩阵是
camera_matrix = np.array([[971.11273473, 0, 326.55605087], [0, 970.7328241, 234.15076249], [0, 0, 1]])
并且 dist_coeffs 是
dist = np.array([[-2.80642551e-01, 4.07127806e+00, -1.23761546e-03, -1.38615834e-03, -3.75389206e+01]])
这是在对相机进行校准后确定的。旋转向量返回如下:
旋转矢量:
[[ 0.17791832]
[ 0.04932656]
[-0.05101292]]
在用 Rodrigues() 转换后,我得到了
[[ 0.99748998 0.05507619 0.04450127]
[-0.04632689 0.98292368 -0.17808663]
[-0.05354968 0.17557803 0.98300803]]
我的问题是,旋转矩阵的定义是围绕每个轴的旋转矩阵的乘积,所以根据定义,它应该是一个 3x3 矩阵。有人可以解释一下或告诉我我做错了什么吗?