0

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 矩阵。有人可以解释一下或告诉我我做错了什么吗?

4

0 回答 0