旋转图像后如何重新映射点?

发布于 2021-01-29 16:04:33

我有一个数学问题:假设我使用带有以下命令的opencv将图像绕其中心旋转30°:

M = cv2.getRotationMatrix2D((cols/2,rows/2),30,1)
img_rotate = cv2.warpAffine(img,M,(cols,rows))

如果拍摄img_rotate的像素(40,40),我怎么知道原始图像中的对应像素是哪个?

编辑:换句话说,当我将旋转应用于图像时,我获得了转换后的图像。是否有可能获得点之间的映射?例如,新图像的(x,y)点对应于原始图像的(x’,y’)点。

关注者
0
被浏览
234
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    只需使用仿射变换和逆矩阵中所述的矩阵运算即可。

    # inverse matrix of simple rotation is reversed rotation.
    M_inv = cv2.getRotationMatrix2D((100/2, 300/2),-30,1)
    
    
    # points
    points = np.array([[35.,  0.],
                       [175., 0.],
                       [105., 200.],
                       [105., 215.],
                      ])
    # add ones
    ones = np.ones(shape=(len(points), 1))
    
    points_ones = np.hstack([points, ones])
    
    # transform points
    transformed_points = M_inv.dot(points_ones.T).T
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看