在opencv python2包装器中是否打破了getPerspectiveTransform?

Sne*_*cle 14 python opencv

在opencv的python2包装器中,似乎与"getPerspectiveTransform"相冲突.首先,它需要两个参数而不是预期的三个参数.

而不是第一个包装器:

cv.GetPerspectiveTransform(source,destination,3x3mat)
Run Code Online (Sandbox Code Playgroud)

下雪了:

cv2.getPerspectiveTransform(?,?)
Run Code Online (Sandbox Code Playgroud)

如果我尝试将两组四个四角顶坐标作为参数放入,如下所示:

cv2.getPerspectiveTransform(first_set_of_corners, second_set_of_corners)
Run Code Online (Sandbox Code Playgroud)

它吐出以下错误:

cv2.error: C:\slave\WinInstallerMegaPack\src\opencv\modules\imgproc\src\imgwarp.
cpp:3194: error: (-215) src.checkVector(2, CV_32F) == 4 && dst.checkVector(2, CV
_32F) == 4
Run Code Online (Sandbox Code Playgroud)

如果checkVectors不应该等于四(因此四边形中的"四边形"),那么我不确定它对我的要求.与python2包装器中的其他内容一样,此功能完全没有记录,因此我不知道它是否已损坏,或者更可能是我做错了.有没有人设法让这个正常工作?

Abi*_*n K 28

无论如何cv2.getPerspectiveTransform都没有被破坏.

可能是,你的积分不是长度4或者它们可能不是float32号码.

试试以下:

import cv2
import numpy as np

img = cv2.imread('1original.jpg',0)

src = np.array([[50,50],[450,450],[70,420],[420,70]],np.float32)
dst = np.array([[0,0],[299,299],[0,299],[299,0]],np.float32)

ret = cv2.getPerspectiveTransform(src,dst)
print ret
Run Code Online (Sandbox Code Playgroud)

结果是:

[[  8.36097696e-01  -4.51944700e-02  -3.95451613e+01]
 [ -4.51944700e-02   8.36097696e-01  -3.95451613e+01]
 [  6.45161290e-05   6.45161290e-05   1.00000000e+00]]
Run Code Online (Sandbox Code Playgroud)

  • @darkgreen-错误消息中的检查是针对`CV_32F`的;神秘的,但是一旦看到它就有意义 (2认同)