我正在使用 cv2.getRotationMatrix2D
获取 2x3 矩阵来旋转源图像。这很好用。现在我有几个二维坐标,它们代表未旋转图像中的点。
我可以使用相同的矩阵来旋转各个点吗?如果可以,如何旋转?
如果我理解正确,我应该能够将矩阵与 (x,y) 坐标相乘,但无论我尝试哪种矩阵和点的组合,我都不会得到简单的 x 和 y 坐标。
感谢您的帮助!
编辑:
旋转矩阵为
[[ 9.24630834e-01 3.80864571e-01 1.52747702e-01]
[ -3.80864571e-01 9.24630834e-01 1.57068951e+02]]
到目前为止我在做什么:
point = np.array([marker.x, marker.y, 1])
transform = rot_matrix * point.T
print transform
但这并没有给我一个应有的 2x1 矩阵,但是:
[[ 2.10815830e+02 7.92198307e+01 1.52747702e-01]
[ -8.68371221e+01 1.92323213e+02 1.57068951e+02]]
最佳答案
请检查此site 。由于 cv2.getRotationMatrix2D
创建仿射变换,您可以像这样编写调用结果:
如果您现在想要变换 2D 点,则必须计算此表达式
这应该可以解决您的问题。 (所有图片均来自引用文档页面)
编辑:关于您的编辑:您不能使用 *
运算符,但应该使用 np.dot()
。 *
运算符仅对矩阵对象执行实矩阵向量乘积。否则,它正在执行逐元素乘积。
关于python - 使用 openCV 和 python 旋转 2D 点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46039108/