Как сделать матрицу аффинного преобразования в матрицу перспективного преобразования? - PullRequest
0 голосов
/ 27 апреля 2020

Из кода

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? и как я могу это сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...