代码之家  ›  专栏  ›  技术社区  ›  YQ.Wang

如何得到透视扭曲图像中某一点的(x,y)?

  •  0
  • YQ.Wang  · 技术社区  · 7 年前

    我对原始图像有一个观点,我对图像做了透视变换。现在我怎样才能在战争图像上得到这一点?下面是一个例子:

    import cv2
    import numpy as np
    
    original_img = cv2.imread('1.jpg')
    # one point(400,560) on the original image
    cv2.circle(original_img, (400,560), 7, (0,255,255), -1)
    original_points = np.float32([(0,560), (0,450), (795,568), (795,748)])
    destination_points = np.float32([(0,400), (0,0), (600,0), (600,400)])
    # transformation matrix
    M = cv2.getPerspectiveTransform(original_points, destination_points)
    # warp perspective
    warpped_img = cv2.warpPerspective(original_img, M, (600,400))
    cv2.imshow('original', original_img)
    cv2.imshow('warpped', warpped_img)
    cv2.waitKey(0)
    

    这是原始图像: enter image description here

    这是扭曲的结果: enter image description here

    (400,560) . 如何计算扭曲图像上这一点的像素?

    1 回复  |  直到 7 年前
        1
  •  1
  •   bigdata2    7 年前
    import cv2
    import numpy as np
    
    original_img = cv2.imread('1.jpg')
    # one point(400,560) on the original image
    cv2.circle(original_img, (400,560), 7, (0,255,255), -1)
    original_points = np.float32([(0,560), (0,450), (795,568), (795,748)])
    destination_points = np.float32([(0,400), (0,0), (600,0), (600,400)])
    # transformation matrix
    M = cv2.getPerspectiveTransform(original_points, destination_points)
    pt =  np.array([[[400,560]]], dtype=np.float32)
    dst_pt = cv2.perspectiveTransform(pt, M)
    dst_pt = dst_pt.astype(int)
    dst_pt = tuple(dst_pt[0,0,].tolist())
    # warp perspective
    warpped_img = cv2.warpPerspective(original_img, M, (600,400))
    cv2.circle(warpped_img, dst_pt, 7, (0,255,255), -1)
    cv2.imshow('original', original_img)
    cv2.imshow('warpped', warpped_img)
    cv2.waitKey(0)
    
    推荐文章