如何将OpenCV的getPerspectiveTransform矩阵转换为CSS矩阵?
OpenCV透视变换矩阵与CSS transform矩阵不匹配问题
我用Python的OpenCV库获取了透视变换矩阵:M = cv2.getPerspectiveTransform(source_points, points),但这个矩阵和CSS的Transform Matrix完全不同——尽管两者都是3x3的齐次矩阵。我推测OpenCV会根据缩放和倾斜值对x、y坐标做额外转换。
示例情况
- 原始图像中,绿色点是源点,橙色点是目标点(源点与目标点示意图)
- 通过
cv2.getPerspectiveTransform(source, target)得到的矩阵:
array([[ 7.45735546e-01, -8.09538161e-02, 1.02930118e+01], [-4.69040997e-01, 8.60285055e-01, 7.66245963e+01], [-6.90849647e-04, -3.31231543e-04, 1.00000000e+00]])
- 使用
cv2.warpPerspective可以得到正确的变换结果(OpenCV正确变换后的图像) - 但将相同矩阵值应用到CSS的
transform属性时,使用齐次矩阵参数transform: matrix(0.74574, -0.46904, -0.08095, 0.86029, -88.57274000000001, -102.30782),得到的结果却完全不符合预期(CSS变换后的错误结果)
我曾查找过getPerspectiveTransform的算法细节,但只找到使用示例,请问我到底遗漏了什么?
内容的提问来源于stack exchange,提问作者Diego Rodea
相关产品推荐
相关产品推荐

