• opencv旋转图像


    0 、使用旋转矩阵旋转

    import cv2
    
    img = cv2.imread('img.jpg', 1)
    (h, w) = img.shape[:2] # 获取图像的宽和高
    
    # 定义旋转中心坐标
    center = (w / 2, h / 2)
    
    # 定义旋转角度
    angle = 90
    
    # 定义缩放比例
    scale = 1
    
    # 获得旋转矩阵
    M = cv2.getRotationMatrix2D(center, angle, scale)
    
    # 进行旋转操作
    result = cv2.warpAffine(img, M, (w, h))
    
    # 显示旋转后的图片
    cv2.imshow('result', result)
    
    # 按下任意键退出
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    注:该方法旋转结果并不会对图像大小发生改变。

    原图:
    在这里插入图片描述
    旋转结果:
    在这里插入图片描述

    1、通过转置反转进行旋转,该方法只能旋转90°的整数倍

    import  cv2
    def cv_img_rotate(img,t=1):
        # 旋转 t=1 90° t=0 180°  t=-1 -90°
        if t == 1 :
            # 顺时针90度
            img = cv2.transpose(img)
            img = cv2.flip(img, 1)
        elif t == 0:
            # 顺时针180度
            img = cv2.flip(img, 1)
            img = cv2.flip(img, 0)
        elif t == -1:
            # 逆时针90°
            img = cv2.flip(img, 1)
            img = cv2.transpose(img)
        return img
    
    img = cv2.imread('img.jpg', 1)
    # 显示原始图片
    cv2.imshow('img', img)
    # 按下任意键退出
    cv2.waitKey(0)
    # 旋转图像
    img = cv_img_rotate(img,t=1)
    # 显示旋转后的图片
    cv2.imshow('result', img)
    
    # 按下任意键退出
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    # 这里使用了 1 -1 0 主要是可以在反转回原图时可以直接使用 -t 进行还原
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    该方法可以理解为整个旋转了图像。
    旋转结果
    在这里插入图片描述

  • 相关阅读:
    Linux进程终止
    python项目实战——银行取款机系统(七)
    Cesium案例(八) Terrain
    Microsoft SQL Server 2022 新特性之 T-SQL 语言增强
    pycharm操作git、前后端项目上传到gitee
    Java 中的泛型 集合(List,Set) Map
    第05章 SpringBoot Web开发(二)
    重载&重写
    【C++】类和对象(中)
    Oracle常用命令
  • 原文地址:https://blog.csdn.net/qq_43994782/article/details/132709887