2015-05-19 3 views
2

У меня есть математический вопрос: предположим, я повернуть изображение вокруг своего центра на угол 30 °, используя OpenCV с помощью следующих команд:Как переназначить точку после поворота изображения?

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

Если взять пиксель (40,40) из img_rotate, как я могу узнать, который является соответствующим пикселем в исходном изображении?

EDIT: Другими словами, когда я применяю поворот к изображению, я получаю преобразованное изображение. Есть ли возможность получить сопоставление между точками? Например, точка (x, y) нового изображения соответствует (x ', y') точке исходного изображения.

+0

Просто выполните те же математические вычисления в координате, чтобы найти новое значение? – GPPK

+0

Не понимаю. Каковы координаты соответствующего значения исходного изображения? Мне нужно знать, как переназначить точку (40,40) на оригинальном изображении. – Alessandro

+0

InverseOfM * point - это то, что вы ищете – Micka

ответ

1

Вы можете использовать функцию transform(), чтобы применить данное преобразование к массивам точек.

cv2.transform(pointsToTransform, M) 
+0

Отлично! Я должен использовать M или модифицированную матрицу (я думаю, что мне нужно рассмотреть обратное вращение, поэтому на -30 °)? – Alessandro

+0

Должна быть такая же матрица M, насколько я знаю. – user2983637

+0

Я ошибаюсь, я не думаю, что это правильный ответ. Мне нужны координаты соответствующей точки, а не преобразованная точка. – Alessandro

4

Просто используйте матрицу, как описано в Affine Transformations, и обратную матрицу.

# 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 
Смежные вопросы