【发布时间】:2020-08-11 06:31:12
【问题描述】:
来自代码
rotation = cv2.getRotationMatrix2D((0, 0), 47.65, 1.0)
我得到了一个旋转变换矩阵,如:
[[ 0.67365771 0.7390435 0. ]
[-0.7390435 0.67365771 0. ]]
由于旋转是仿射变换的一种特殊情况,我认为这是一个有效的仿射变换矩阵,对吗?
由于仿射变换是透视变换的一个特例,我也认为这个矩阵是一个有效的透视变换矩阵,如果我在它的基础上做一些修改。
所以我尝试再添加 1 行以使其形状为 3 x 3。
newrow = numpy.array([numpy.array([1, 1, 1])]) # [[0 0 0]]
rotation3 = numpy.append(rotation, newrow, axis=0)
打印(旋转3):
[[ 0.67365771 0.7390435 0. ]
[-0.7390435 0.67365771 0. ]
[ 1. 1. 1. ]]
但是rotation3 似乎不能作为透视矩阵正常工作,这是我测试它的方法:
rotated_points = cv2.perspectiveTransform(points, rotation3)
rotated_points 看起来不像 points 的旋转
[1, 1, 1] 是正确的第 3 行,我是否也应该更改第 1 和 2 行?我该怎么做?
【问题讨论】:
-
我认为3行应该是[0, 0, 1],你可以试试这个吗?
标签: python numpy opencv matrix affinetransform