【问题标题】:OpenCV 2.4 estimateAffine3D in PythonPython中的OpenCV 2.4估计Affine3D
【发布时间】:2013-04-04 13:03:24
【问题描述】:

我正在尝试使用方法 cv2.estimateAffine3D 但没有成功。这是我的代码示例:

import numpy as np
import cv2

shape = (1, 4, 3)
source = np.zeros(shape, np.float32)

# [x, y, z]
source[0][0] = [857, 120, 854]
source[0][1] = [254, 120, 855]
source[0][2] = [256, 120, 255]
source[0][3] = [858, 120, 255]
target = source * 10

retval, M, inliers = cv2.estimateAffine3D(source, target)

当我尝试运行此示例时,我收到与其他帖子 here 相同的错误。

我正在使用 OpenCV 2.4.3 和 Python 2.7.3

请帮帮我!

【问题讨论】:

    标签: opencv python-2.7 numpy


    【解决方案1】:

    这是2.4.4 中修复的已知错误。

    http://code.opencv.org/issues/2375

    如果您只需要刚性(旋转+平移)对齐,这是标准方法:

    def get_rigid(src, dst): # Assumes both or Nx3 matrices
        src_mean = src.mean(0)
        dst_mean = dst.mean(0)
        # Compute covariance 
        H = reduce(lambda s, (a,b) : s + np.outer(a, b), zip(src - src_mean, dst - dst_mean), np.zeros((3,3)))
        u, s, v = np.linalg.svd(H)
        R = v.T.dot(u.T) # Rotation
        T = - R.dot(src_mean) + dst_mean # Translation
        return np.hstack((R, T[:, np.newaxis])) 
    

    【讨论】:

      猜你喜欢
      • 2013-03-24
      • 1970-01-01
      • 2017-06-08
      • 2012-08-30
      • 1970-01-01
      • 2017-02-24
      • 2012-12-23
      • 2016-04-25
      • 2015-09-09
      相关资源
      最近更新 更多