Python 如何从findHomography中获取旋转角度?

Python 如何从findHomography中获取旋转角度?,python,opencv,math,geometry,homography,Python,Opencv,Math,Geometry,Homography,我想旋转图像,而不必求助于cv2.warpPerspective()。如何从函数输出中获取角度 #查找单应 H、 mask=cv2.findHomography(点S1、点S2、cv2.RANSAC) #例如,我的H: 阵列([[1.20001976e-01,5.19205433e-04,-1.21739638e+01], [1.51272694e-03,1.18686196e-01,-1.59772594e+01], [1.98308723e-06,-1.18197608e-07,1.000

我想旋转图像,而不必求助于
cv2.warpPerspective()
。如何从函数输出中获取角度

#查找单应
H、 mask=cv2.findHomography(点S1、点S2、cv2.RANSAC)
#例如,我的H:
阵列([[1.20001976e-01,5.19205433e-04,-1.21739638e+01],
[1.51272694e-03,1.18686196e-01,-1.59772594e+01],
[1.98308723e-06,-1.18197608e-07,1.00000000e+00]]
#someFunction应该是什么?
角度=某个函数(H)#从0到360
旋转=imutils.rotate(图像,角度=角度)

如果两组点之间的变换是缩放+旋转+平移,则单应性将只是一个仿射矩阵,其中2x2左上块是缩放旋转。在这种情况下,使用以下公式计算角度:

angle = math.atan2(H[1,0], H[0,0])
如果某些其他类型的变换可以悄悄进入(剪切、投影),则更安全的做法是首先对2x2左上块执行SVD分解以恢复旋转:

u, _, vh = numpy.linalg.svd(H[0:2, 0:2])
R = u @ vh
angle = math.atan2(R[1,0], R[0,0])
openCV已经有了一个方法来做this@EdChum那么,如何从可用数据中获得“K–输入固有相机校准矩阵”。可能使用getAffine,然后使用GetRTFrom均质