geom.py 文件源码

python
阅读 25 收藏 0 点赞 0 评论 0

项目:cvcalib 作者: Algomorph 项目源码 文件源码
def __init__(self, transform=None, inverse_transform=None, rotation=None, translation_vector=None):
        if translation_vector is not None:
            if type(translation_vector) != np.ndarray:
                translation_vector = np.array(translation_vector)
            if translation_vector.shape != (3, 1):
                translation_vector = translation_vector.reshape(3, 1)
        if rotation is not None:
            if type(rotation) != np.ndarray:
                rotation = np.array(rotation)
            if rotation.size == 9:
                rotation_vector = cv2.Rodrigues(rotation)[0]
                rotation_matrix = rotation
            elif rotation.size == 3:
                rotation_matrix = cv2.Rodrigues(rotation)[0]
                rotation_vector = rotation
            else:
                raise ValueError(
                    "Wrong rotation size: {:d}. Expecting a 3-length vector or 3x3 matrix.".format(rotation.size))
        if transform is None:
            if translation_vector is None or rotation is None:
                raise (ValueError("Expecting either the transform matrix or both the rotation & translation vector"))
            self.T = np.vstack((np.append(rotation_matrix, translation_vector, axis=1), [0, 0, 0, 1]))
        else:
            self.T = transform
            if translation_vector is None:
                translation_vector = transform[0:3, 3].reshape(3, 1)
            if rotation is None:
                rotation_matrix = transform[0:3, 0:3]
                rotation_vector = cv2.Rodrigues(rotation_matrix)[0]
        if inverse_transform is None:
            rot_mat_inv = rotation_matrix.T
            inverse_translation = -rot_mat_inv.dot(translation_vector)
            inverse_transform = np.vstack((np.append(rot_mat_inv, inverse_translation, 1), [0, 0, 0, 1]))

        self.rmat = rotation_matrix
        self.tvec = translation_vector
        self.rvec = rotation_vector
        self.T_inv = inverse_transform
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号