¿Cómo puedo reasignar un punto después de una rotación de imagen?

Tengo una pregunta matemática: supongamos que roto una imagen alrededor de su centro en un ángulo de 30 °, usando el control de apertura con los siguientes comandos:

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

Si tomo el píxel (40,40) del img_rotate, ¿cómo puedo saber cuál es el píxel correspondiente en la imagen original?

EDITAR: en otras palabras, cuando aplico la rotación a una imagen obtengo la imagen transformada. ¿Existe la posibilidad de obtener el mapeo entre puntos? Por ejemplo, el punto (x, y) de la nueva imagen corresponde al punto (x ‘, y’) de la imagen original.

Simplemente use la operación de matriz como se describe en Transformaciones afines y matriz inversa.

 # 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 

Puede usar la función transform () para aplicar la transformación dada a matrices de puntos.

 cv2.transform(pointsToTransform, M)