当前位置: 首页 > news >正文

《OpenCV计算机视觉》—— 对图片进行旋转的两种方法

文章目录

  • 一、用numpy库中的方法对图片进行旋转
  • 二、用OpenCV库中的方法对图片进行旋转

一、用numpy库中的方法对图片进行旋转

  • numpy库中的 np.rot90 函数方法可以对图片进行旋转

  • 代码实现如下:

    import cv2
    import numpy as np# 读取图片
    img = cv2.imread('wechat.jpg')
    # 修改图片大小(可选)
    img = cv2.resize(img, dsize=None, fx=0.3, fy=0.3)
    """ k参数的取值:负数代表顺时针方向,正数代表逆时针方向,数值代表旋转多少次 """
    # 旋转 90 度 k=-1 表示顺时针 90 度 1 次
    shun_1 = np.rot90(img, k=-1)
    # 旋转 90 度 k=1 表示逆时针 90 度 2 次
    ni_2 = np.rot90(img, k=2)# 显示图片
    cv2.imshow('yuantu', img)
    cv2.imshow('shun_1', shun_1)
    cv2.imshow('ni_2', ni_2)# 等待任意键按下后关闭所有窗口
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
  • 结果如下:
    在这里插入图片描述

二、用OpenCV库中的方法对图片进行旋转

  • OpenCV库中的 cv2.rotate() 函数用于旋转图片

  • cv2.rotate() 函数有两个主要的参数:

    • src: 输入图像(源图像),它是一个 NumPy 数组。
    • rotateCode: 旋转的类型,指定旋转的方向和角度。常见的值包括:
      • cv2.ROTATE_90_CLOCKWISE:顺时针旋转 90 度。
      • cv2.ROTATE_180:旋转 180 度。
      • cv2.ROTATE_90_COUNTERCLOCKWISE:逆时针旋转 90 度。
  • 代码实现如下:

    import cv2# 读取图片
    img = cv2.imread('wechat.jpg')
    # 修改图片大小(可选)
    img = cv2.resize(img, dsize=None, fx=0.3, fy=0.3)rotated_image = cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE)  # 顺时针90度
    rotated_image1 = cv2.rotate(img, cv2.ROTATE_90_COUNTERCLOCKWISE)  # 逆时针90度
    rotated_image2 = cv2.rotate(img, cv2.ROTATE_180)  # 旋转180度# 显示图片
    cv2.imshow('shun90', rotated_image)
    cv2.imshow('ni90', rotated_image1)
    cv2.imshow('180', rotated_image2)# 等待任意键按下后关闭所有窗口
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
  • 结果如下:
    在这里插入图片描述

在实际的运用中可以根据实际情况,选择合适的旋转方式

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 3D云渲染农场为何怎么贵?主要消耗成本介绍
  • 什么是野指针和悬空指针?
  • NVIDIA驱动学习
  • 【即时通讯】轮询方式实现
  • Android 内置应用裁剪
  • 基于python实现Modis数据的检索与下载
  • React第三章(tsx语法入门 )
  • 移远通信高端5G智能模组SG560D-NA率先通过PTCRB认证
  • 配置WSL(单纯记录
  • Hive任务优化参数整理
  • 【笔记】绪论 轨道交通材料及其加工工艺
  • Version ‘18.19.0‘ not found - try `nvm ls-remote` to browse available versions.
  • torch.stack()方法在数据集构造中的应用
  • 【Rust】008-常用集合
  • 【计算机网络】电路交换、报文交换和分组交换——三种交换方式性能分析以及计算机网络的分类
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • IDEA 插件开发入门教程
  • Java深入 - 深入理解Java集合
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • 从零开始的无人驾驶 1
  • 关于Java中分层中遇到的一些问题
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 使用权重正则化较少模型过拟合
  • 微服务框架lagom
  • 微信公众号开发小记——5.python微信红包
  • 项目管理碎碎念系列之一:干系人管理
  • 学习HTTP相关知识笔记
  • 学习Vue.js的五个小例子
  • 以太坊客户端Geth命令参数详解
  • Hibernate主键生成策略及选择
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • ​​​​​​​​​​​​​​Γ函数
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • #java学习笔记(面向对象)----(未完结)
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (Oracle)SQL优化技巧(一):分页查询
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (二)windows配置JDK环境
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (一) springboot详细介绍
  • (游戏设计草稿) 《外卖员模拟器》 (3D 科幻 角色扮演 开放世界 AI VR)
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • .FileZilla的使用和主动模式被动模式介绍
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .Net IOC框架入门之一 Unity
  • .NET 反射的使用
  • .NET/C# 检测电脑上安装的 .NET Framework 的版本
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • .NET单元测试使用AutoFixture按需填充的方法总结
  • //TODO 注释的作用
  • ??javascript里的变量问题