gpt4 book ai didi

python - Opencv Homography matrix H and Inverse H to transform a point 没有得到预期的结果

转载 作者:太空狗 更新时间:2023-10-30 01:21:18 26 4
gpt4 key购买 nike

我正在使用 Opencv python 接口(interface)并获得了单应矩阵 H。它似乎工作正常,因为我可以使用扭曲透视从源图像中获取扭曲图像。我现在尝试使用 H 和 Inverse H 在两个坐标之间来回变换一个点(不是图像),但没有得到预期的结果。

为了得到矩阵,我这样做了:

pts1 = np.float32(corners)
pts2 = np.float32([[0,0], [400,0], [400,400], [0,400]])
self.transform_matrix = cv2.getPerspectiveTransform(pts1, pts2)

给定此矩阵,我使用以下内容进行正向和反向变换:

def transformPoints(self, x, y, reverse=False, integer=True):

if reverse == False:
H = self.transform_matrix
else:
val, H = cv2.invert(self.transform_matrix)

# get the elements in the transform matrix
h0 = H[0,0]
h1 = H[0,1]
h2 = H[0,2]
h3 = H[1,0]
h4 = H[1,1]
h5 = H[1,2]
h6 = H[2,0]
h7 = H[2,1]
h8 = H[2,2]

tx = (h0*x + h1*y + h2)
ty = (h3*x + h4*x + h5)
tz = (h6*x + h7*y + h8)

if integer==True:
px = int(tx/tz)
py = int(ty/tz)
Z = int(1/tz)
else:
px = tx/tz
py = ty/tz
Z = 1/tz

return (px, py)

现在,如果我这样做:

s, t = 100,200
print "s=%d, t=%d" % (s,t)
a, b = pt.transformPoints(s,t)
print "a=%d, b=%d" % (a,b)

c, d = pt.transformPoints(a, b, True)
print "c=%d, d=%d" % (c,d)

这是它打印的内容:a=395, b=169c=91, d=226

我期望 c=100 和 d=200,或者至少接近。

这是矩阵,它是逆矩阵。
H矩阵

[[ -1.01486350e-01  -1.99156329e+01   8.44058060e+02]
[ 1.82486862e+00 3.62765073e-01 -1.49259809e+03]
[ -4.43678849e-03 -4.28012674e-02 1.00000000e+00]]

逆:

[[  4.13378829e-01   1.05495739e-01  -1.91452995e+02]
[ -3.12201095e-02 -2.37099792e-02 -9.03788455e+00]
[ 4.97814178e-04 -5.46754880e-04 -2.36269358e-01]]

我尝试做一个点积,它似乎生成了一个单位矩阵:

[[  1.00000000e+00   1.77635684e-15  -5.68434189e-14]
[ -6.93889390e-18 1.00000000e+00 5.32907052e-15]
[ -2.16840434e-19 1.73472348e-18 1.00000000e+00]]

感谢任何帮助。

最佳答案

第二行有错别字

tx = (h0*x + h1*y + h2) 
ty = (h3*x + h4*x + h5)
tz = (h6*x + h7*y + h8)

h4 应该乘以 y 坐标

关于python - Opencv Homography matrix H and Inverse H to transform a point 没有得到预期的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32366786/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com