python中的Opencv 2.4.3估计RigidTransform

Jee*_*87c 5 python opencv numpy python-2.7

这对我来说真的是一团糟,我很难解决这个问题。我想在带有 numpy 数组的 Python 中使用 cv2.estimateRigitTransform 方法,但我找不到任何示例或其他内容来解释所需的 src 和 dst numpy 数组的格式。

有人可以给我发送一个可以使用这种方法的这两个数组的小例子吗?我拥有所有数据(当然是 2D 数据),但找不到如何在 numpy 数组中对其进行整形。

请帮我。谢谢!

Geo*_*off 4

这是一个基本示例,尝试对齐两个随机的 10 个点集

import numpy as np
import cv2
shape = (1, 10, 2) # Needs to be a 3D array
source = np.random.randint(0, 100, shape).astype(np.int)
target = source + np.array([1, 0]).astype(np.int)
transformation = cv2.estimateRigidTransform(source, target, False)
Run Code Online (Sandbox Code Playgroud)

文档在这里

  • 我已经尝试让estimateRigidTransform工作几天了...我想补充一点,3D部分很重要,而且astype()对于cv2正确识别向量也很重要。它不一定是 np.int 类型,但数组肯定需要为 cv2 定义的 dtype 才能正常工作。希望有一天这能让某人免于头痛。 (6认同)
  • 要添加到 Brian 的评论中,它需要是 np.float32,该函数不接受 np.float64 并且错误消息:“两个输入图像在函数 cvEstimateRigidTransform 中必须具有 8uC1 或 8uC3 类型”仅适用于 2D 图像情况。您必须深入源代码才能看到这一行:“else if( CV_MAT_TYPE(A->type) == CV_32FC2 || CV_MAT_TYPE(A->type) == CV_32SC2 )” (2认同)