opencv -- 如何实际使用 cv2.estimateAffine3D 在 python 中对齐 3d 点?

问题描述 投票:0回答:1

我想计算一个相似性对齐,该对齐覆盖两组对应的点(旋转、缩放、平移)。 OpenCV 有一个可爱的函数可以做到这一点,estimateAffine3D()。尽管还有其他一些关于它的堆栈溢出问题,但没有人提出如何使用此函数来执行其宣传的功能的实际示例(即使函数文档是不透明的)。用代码示例提出并回答我自己的问题,只是为了记录下来并节省您一些时间。

python opencv geometry
1个回答
0
投票
def similarity_align(v_src, v_target, v_transform=None):
    """find a similarity transformation that best maps v_src to vs_target
    (points are in correspondence by index).
    v_src and v_target are numpy arrays of 3d points by row.
    Returns transformed v_transform if given, else transformed v_src
    """
    xform, scale = cv2.estimateAffine3D(v_src, v_target, force_rotation=True)
    src = v_src if v_transform is None else v_transform
    aligned = src.dot(xform[:, :3].T) * scale + xform[:, 3]
    return aligned
© www.soinside.com 2019 - 2024. All rights reserved.