zoukankan      html  css  js  c++  java
  • 【opencv+python】图像的基本操作:缩放、剪切、位移、旋转、仿射变换

    1.缩放

    代码:

    # 使用resize函数实现图片缩放
    import cv2
    src = cv2.imread("C:/360Downloads/1.jpg", 1)
    cv2.imshow("src", src)
    srcInfo = src.shape
    height = srcInfo[0]
    width = srcInfo[1]
    
    dstHeight = int(height * 0.5)
    dstWidth = int(width * 0.5)
    
    dst = cv2.resize(src, (dstWidth, dstHeight))
    cv2.imshow("dst", dst)
    cv2.waitKey(0)
    
    # 使用warpAffine函数实现图片缩放 import cv2 import numpy as np src = cv2.imread("C:/360Downloads/1.jpg", 1) cv2.imshow("src", src) srcInfo = src.shape height = int(srcInfo[0]/2) width = int(srcInfo[1]/2) # 将图片缩小为原来的一半: # xNew = x * 0.5 # yNew = y * 0.5 # xNew = x * A1 + y * A2 + B1 # yNew = x * A3 + y * A4 + B2 # np.float32([[A1, A3, B1], # [A2, A4, B2]]) matScale = np.float32([[0.5, 0, 0], [0, 0.5, 0]]) dst = cv2.warpAffine(src, matScale, (width, height)) cv2.imshow("dst", dst) cv2.waitKey(0)

    效果:

     

    2.剪切

    代码:

    # 图片剪切
    import cv2
    src = cv2.imread("C:/360Downloads/1.jpg", 1)
    cv2.imshow("src", src)
    
    # [行,列] dst
    = src[100:200, 100:300] cv2.imshow("dst", dst) cv2.waitKey(0)

    效果:

     

     

    3.位移

    代码:

    # 图像位移
    import cv2
    import numpy as np
    src = cv2.imread("C:/360Downloads/1.jpg", 1)
    cv2.imshow("src", src)
    srcInfo = src.shape
    height = srcInfo[0]
    width = srcInfo[1]
    
    # 左移100,下移200:
    # xNew = x + 100
    # yNew = y + 200
    
    # xNew = x * A1 + y * A2 + B1
    # yNew = x * A3 + y * A4 + B2
    
    # np.float32([[A1, A3, B1],
    #             [A2, A4, B2]])
    matShift = np.float32([[1, 0, 100], [0, 1, 200]])
    dst = cv2.warpAffine(src, matShift, (width, height))
    
    cv2.imshow("dst", dst)
    cv2.waitKey(0)

    效果:

     

     

    4.旋转

    代码:

    # 旋转图像
    import cv2
    src = cv2.imread("C:/360Downloads/1.jpg", 1)
    cv2.imshow("src", src)
    srcInfo = src.shape
    height = srcInfo[0]
    width = srcInfo[1]
    
    # getRotationMatrix2D 函数可获取旋转的仿射矩阵
    # 参数依次为(旋转中心,旋转角度,缩放比例)
    matRotate = cv2.getRotationMatrix2D((0, 0), 45, 0.5)
    dst = cv2.warpAffine(src, matRotate, (width, height))
    
    cv2.imshow("dst", dst)
    cv2.waitKey(0)

    效果:

     

     

    5.仿射变换

    代码:

    # 仿射变换
    import cv2
    import numpy as np
    src = cv2.imread("C:/360Downloads/1.jpg", 1)
    cv2.imshow("src", src)
    srcInfo = src.shape
    height = srcInfo[0]
    width = srcInfo[1]
    
    # 三点确定一个平面
    # getAffineTransform 函数可获取仿射矩阵
    # 参数依次为(源图像的三点坐标,目标图像的三点坐标)
    # 三点分别为(左上角,左下角,右上角)
    matSrc = np.float32([[0, 0], [0, height - 1], [width - 1, 0]])
    matDst = np.float32([[50, 50], [150, height - 100], [width - 100, 150]])
    matAffine = cv2.getAffineTransform(matSrc, matDst)
    dst = cv2.warpAffine(src, matAffine, (width, height))
    
    cv2.imshow("dst", dst)
    cv2.waitKey(0)

    效果:

     

  • 相关阅读:
    verilog学习(9)实战之存储器&奇偶校验
    求职经验之综合岗位三面
    求职经验之综合岗位二面
    求职经验之综合岗位
    verilog学习(8)实战之PPL与串行/解串器
    verilog学习(7)实战之扫描链
    verilog学习(6)实战4之触发器与锁存器
    verilog学习(5)实战3之计数器与bus
    verilog学习(4)实战1之基础练习
    求职经验之器件与芯片岗
  • 原文地址:https://www.cnblogs.com/bjxqmy/p/13489405.html
Copyright © 2011-2022 走看看