zoukankan      html  css  js  c++  java
  • 图像的几何变换——OpenCV-Python Tutorials

    原文地址http://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_geometric_transformations/py_geometric_transformations.html#geometric-transformations


    目标

    • 学习将不同的几何变换应用到像平移、旋转、仿射变换等图像上。
    • 你会看到这些函数:cv2.getPerspectiveTransform

    变换

    OpenCV提供了两个变换函数,cv2.warpAffine 和cv2.warpPerspective,你可以使用后者进行各种各样的转换。cv2.warpAffine采用2x3变换矩阵,而cv2.warpPerspective以一个3x3的变换矩阵作为输入。

    缩放

    缩放仅仅是改变图片的大小。OpenCV使用cv2.resize() 来达到这个目的。图像的大小可以手动指定,也可以指定比例因子。使用不同的插值方法。

    平移

    平移是指物体位置的移动。

    旋转

    使图像旋转一个角度通过下面这种形式的变换矩阵来完成

    仿射变换

    在放射变换中,原图中的平行线,在输出的图片中照样是平行线。

    透视变换

    为了进行透视变换,你需要一个3*3的变换矩阵。即使在变换后,直线仍然是直线。为了找到变换矩阵,你需要在输入图片中找到4个点并确定输出图片与之对应的点。在这四个点中,其中3个不能再一条直线上。然后就可以通过cv2.getPerspectiveTransform.这个函数来计算变换矩阵。然后应用到cv2.warpPerspective 这个函数中。

     

    代码如下:

    img = cv2.imread('sudokusmall.png')
    rows,cols,ch = img.shape
    
    pts1 = np.float32([[56,65],[368,52],[28,387],[389,390]])
    pts2 = np.float32([[0,0],[300,0],[0,300],[300,300]])
    
    M = cv2.getPerspectiveTransform(pts1,pts2)
    
    dst = cv2.warpPerspective(img,M,(300,300))
    
    plt.subplot(121),plt.imshow(img),plt.title('Input')
    plt.subplot(122),plt.imshow(dst),plt.title('Output')
    plt.show()

    结果:

     

     

     

     

     

     

  • 相关阅读:
    转载(腾讯云社区)——详解django-apscheduler的使用方法
    pipenv——python包管理工具
    xx系统需求进度02
    xx系统需求进度01
    Hbase简介
    第七周总结
    《软件需求十步走》阅读笔记一
    第六周总结
    HDFS
    金字塔表达方法
  • 原文地址:https://www.cnblogs.com/wildbloom/p/8321488.html
Copyright © 2011-2022 走看看