0

次のコードを使用して、長方形のオブジェクトの回転ベクトルと並進ベクトルを見つけています。長方形のオブジェクトの高さと幅は、それぞれ 33 cm と 44 cm です。そこで、次のコードを使用してオブジェクト ポイントを作成しています。

width = 44
height = 33

objPoints = np.array(
    [(0, 0, 0), (width * 0.01, 0, 0), (width * 0.001, -(height* 0.001) , 0), (0, -(height* 0.001), 0)]
)

次のコードを使用して、回転、並進ベクトルを決定します。

def findPose(imagePoints):

    (success, rotation_vector, translation_vector) = cv2.solvePnP(objPoints, imagePoints, camera_matrix,
                                                                  dist_coeffs, flags=cv2.SOLVEPNP_ITERATIVE)
    print("Rotation Vector:\n {0}".format(rotation_vector))
    print("Translation Vector:\n {0}".format(translation_vector))
    (end_point2D, jacobian) = cv2.projectPoints(np.array([(0.0, 0.0, 1000.0)]), rotation_vector,
                                                     translation_vector, camera_matrix, dist_coeffs)

何らかの理由で、結果は常に間違っています。オブジェクト ポイントを適切に作成していますか?

4

1 に答える 1