2016-07-25 76 views
1

如何在变换M(40度逆时针旋转)后得到本例中点ab的新坐标?计算转换后关键点的新坐标

import cv2 

cap = cv2.VideoCapture("http://i.imgur.com/7G91d2im.jpg") 
a, b = (100, 100), (200, 200) 

if cap.isOpened(): 
    ret, im = cap.read() 
    rows, cols = im.shape[:2] 

    im_keypoints = im.copy() 
    for point in [a, b]: 
     cv2.circle(im_keypoints, point, 6, (0, 0, 255), -1) 
    cv2.imwrite("im_keypoints.jpg", im_keypoints) 

    M = cv2.getRotationMatrix2D((cols/2, rows/2), 40, 1) 
    im_rotated = cv2.warpAffine(im, M, (cols, rows)) 

    cv2.imwrite("im_rotated.jpg", im_rotated) 

enter image description here enter image description here

回答

1

M是2×3旋转矩阵,因此,所有你需要做的是运用M至您的观点。

im_rotated_keypoints = im_rotated.copy() 
for point in [a, b]: 
    # Convert to homogenous coordinates in np array format first so that you can pre-multiply M 
    rotated_point = M.dot(np.array(point + (1,))) 
    cv.circle(im_rotated_keypoints, (int(rotated_point[0]), int(rotated_point[1])), 6, (0, 0, 255), -1) 

,你应该能够看到

rotated