• OpenCV图像变换


    一 图像的缩放

    resize(src,dst,dsize,fx,fy,interpolation)
    fx:x轴的缩放因子
    fy:y轴的缩放因子
    interpolation 插值算法

    INTER_NEAREST,临近插值,速度快,效果差
    INTER_LINEAR,双线性插值,原图中的4个点
    INTER_CUBIC 三次插值,原图中的16个点
    INTER_AREA 效果最好

    import cv2
    import numpy as np
    
    girl=cv2.imread('./2037548.jpg')
    
    new=cv2.resize(girl,(800,600))
    
    cv2.imshow('scale',new)
    
    cv2.waitKey(0)
    

    二 图像翻转

    flip(img,flipCode)
    flipCode==0 上下
    flipCode>0 左右
    flipCode<0 上下+左右
    
    import cv2
    import numpy as np
    
    girl=cv2.imread('./2037551.jpg')
    
    new=cv2.flip(girl,0)
    
    cv2.imshow('girl',new)
    
    cv2.waitKey(0)
    

    三 图像旋转

    rotate(img,rotateCode)
    ROTATE_90_CLOCKWISE)
    ROTATE_180
    ROTATE_90_COUNTERCLOCKWISE
    
    import cv2
    import numpy as np
    
    girl=cv2.imread('./2037551.jpg')
    
    new =cv2.rotate(girl,cv2.ROTATE_90_CLOCKWISE)
    
    cv2.imshow('girl',new)
    
    cv2.waitKey(0)
    

    仿射变换之图像平移

    仿射变换是图像旋转、缩放、平移的总称。

    1 仿射API

    warpAffine(src,M,dsie,flags,mode,value)
    M:变换矩阵
    dsize输出尺寸大小
    flag:与resize中插值算法一致
    Mode:边界外推法标志
    value:填充边界的值
    

    2 平移矩阵

    矩阵中的每个像素由(x,y)组成。
    因此,其变换矩阵是2X2的矩阵。
    平移向量为2x1的向量,所在平移矩阵为2x3矩阵。

    import cv2
    import numpy as np
    
    girl=cv2.imread('./2037551.jpg')
    M=np.float32([[1,0,100],[0,1,100]])
    h,w,ch=girl.shape
    
    new=cv2.warpAffine(girl,M,(w,h))
    
    cv2.imshow('girl',girl)
    cv2.imshow('newgirl',new)
    cv2.waitKey(0)
    

    五 仿射变换之获取变换矩阵

    getRotationMatrix2D(center,angle,scale)
    center中心点
    angle角度
    scale缩放比例
    
    import cv2
    import numpy as np
    
    girl=cv2.imread('./2037551.jpg')
    h,w,ch=girl.shape
    # 旋转的角度为逆时针
    # 中心点(x,y)
    M=cv2.getRotationMatrix2D((w/2,h/2),15,1.0)
    # 如果想改变新图形的尺寸,需要修改dsize
    new=cv2.warpAffine(girl,M,(int(w/2),int(h/2)))
    
    cv2.imshow('girl',girl)
    cv2.imshow('new',new)
    cv2.waitKey(0)
    
    

    六 仿射变化之变换矩阵之二

    变换矩阵(二)
    在这里插入图片描述

    getAffineTransform(src[],dst[])
    通过三个点可以确定变换的位置
    
    import cv2
    import numpy as np
    
    girl=cv2.imread('./2037551.jpg')
    h,w,ch=girl.shape
    src=np.float32([[400,300],[800,300],[400,1000]])
    dst=np.float32([[200,400],[600,500],[150,1100]])
    M=cv2.getAffineTransform(src,dst)
    
    new=cv2.warpAffine(girl,M,(w,h))
    
    cv2.imshow('girl',girl)
    cv2.imshow('new',new)
    cv2.waitKey(0)
    

    七 OpenCV透视变换

    透视变换API

    warpPerspective(img,M,dsize,..)
    M是边变换矩阵
    dsize是目标图像大小
    
    getPersectiveTransform(src,dst)
    四个点(图形的四个角)
    
    import cv2
    import numpy as np
    
    img=cv2.imread('./2037551.jpg')
    src=np.float32([[100,1100],[2100,1100],[0,400],[2500,2900]])
    dst=np.float32([[0,0],[2300,0],[0,3000],[2300,3000]])
    M=cv2.getPerspectiveTransform(src,dst)
    cv2.warpPerspective(img,M,(2300,3000))
    
    new=cv2.warpPerspective(img,M,(2300,3000))
    
    cv2.imshow('orgin',img)
    cv2.imshow('new',new)
    cv2.waitKey(0)
    
  • 相关阅读:
    C++ 语言学习 day11 复习(3)
    文章分类管理接口
    图像处理--平滑
    摄像头识别安全帽
    python学习6
    MyBatis - 开启驼峰命名,防止出现查询为Null
    Sora引领AI生成模型新篇章,视频人工AI创造新视野
    流式编程 stream
    高级FPGA设计结构实现和优化_(六)静态时序分析
    SpringBoot自动配置原理解析
  • 原文地址:https://blog.csdn.net/weixin_42291376/article/details/139584070