OpenCV错误:参数'M'的预期cv :: UMat

时间:2019-02-27 16:04:10

标签: python opencv opencl

我是Python的新手,因此在调试脚本时遇到了麻烦。我正在尝试使用opencv脚本创建一个'average face',以使用自己的图像重新创建。 Here's the Github repo我正在使用,但this onethis one也是一样。

地标检测部分可以工作,但是average.py脚本抛出了我不知道如何解决的错误。

我通过用xrange()代替range()函数解决了前两个错误。到目前为止,estimateRigidTransform()似乎比estimateAffinePartial2D()更令人着迷。

现在控制台向我抛出以下错误:

TypeError: Expected cv::UMat for argument 'M'

这是脚本的代码段:

# Apply affine transform calculated using src_tri and dst_tri to src and
# output an image of size.
def apply_affine_transform(src, src_tri, dst_tri, size):

    # Given a pair of triangles, find the affine transform.
    warp_mat = cv2.getAffineTransform(np.float32(src_tri), np.float32(dst_tri))

    # Apply the Affine Transform just found to the src image
    dst = cv2.warpAffine(src, warp_mat, (size[0], size[1]), None,
        flags=cv2.INTER_LINEAR, borderMode=cv2.BORDER_REFLECT_101)

    return dst

有关可重现的代码,请参见此问题简介中的回购。

非常感谢所有帮助!

1 个答案:

答案 0 :(得分:2)

返回tform = cv2.estimateAffinePartial2D(np.array([inPts]), np.array([outPts])),而不是使用tform并返回tform[0]

有关更多详细信息,请参见documentation

您会注意到estimateAffinePartial2D返回retValinliers。这就是为什么返回tform时得到TypeError的原因。

我还创建了PR来修复LearnOpenCV GitHub存储库上的代码。

Vishwesh

编辑:您可以检查PR here