Из кода
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)
print (вращение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? и как я могу это сделать?