OpenCV 图像旋转、平移、缩放

news2024/11/24 5:43:38

        本文是 OpenCV图像视觉入门之路的第7篇文章,本文详细的进行了图像的缩放 cv2.resize()、旋转 cv2.flip()、平移 cv2.warpAffine()等操作。

OpenCV 图像旋转、平移、缩放目录

1 缩放图片

2 翻转图片

2.1 垂直翻转

2.2 水平翻转

2.3 水平垂直翻转

​编辑

3 平移图片


1 缩放图片

缩放就是调整图片的大小,使用cv2.resize()函数实现缩放,可以按照比例缩放,也可以按照指定的大小缩放:
也可以指定缩放方法为线性插值INTER_LINEAR。

放过程中有五种插值方式:

  • cv2.INTER_NEAREST 最近邻插值
  • cv2.INTER_LINEAR 线性插值
  • cv2.INTER_AREA 基于局部像素的重采样,区域插值
  • cv2.INTER_CUBIC 基于邻域4x4像素的三次插值
  • cv2.INTER_LANCZOS4 基于8x8像素邻域的Lanczos插值
import cv2
from PIL import Image
import matplotlib.pyplot as plt
import numpy as np

# 按间距中的绿色按钮以运行脚本。
if __name__ == '__main__':
    image = cv2.imread('D:/Jupyter_Notebooks/0.jpg')

    # 从RGB色彩空间转换到HSV色彩空间
    hsv = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

    # 按照指定的宽度、高度缩放图片
    res = cv2.resize(image, (960, 540))
    # 按照比例缩放,如x,y轴均放大一倍
    res2 = cv2.resize(image, None, fx=2, fy=2, interpolation=cv2.INTER_LINEAR)

    cv2.imshow("image", image)
    cv2.imshow("res2", res2)

    cv2.waitKey(0)
    cv2.destroyAllWindows()

2 翻转图片

镜像翻转图片,可以用cv2.flip()函数:
其中,参数2 = 0:垂直翻转(沿x轴),参数2 > 0: 水平翻转(沿y轴),参数2 < 0: 水平垂直翻转。

import cv2
from PIL import Image
import matplotlib.pyplot as plt
import numpy as np

# 按间距中的绿色按钮以运行脚本。
if __name__ == '__main__':
    image = cv2.imread('D:/Jupyter_Notebooks/0.jpg')

    # 从RGB色彩空间转换到HSV色彩空间
    # image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

    dst = cv2.flip(image, 0)


    cv2.imshow("image", image)
    cv2.imshow("res2", dst)

    cv2.waitKey(0)
    cv2.destroyAllWindows()

2.1 垂直翻转

dst = cv2.flip(image, 0) 

2.2 水平翻转

dst = cv2.flip(image, 1) 

2.3 水平垂直翻转

dst = cv2.flip(image, -1)  

3 平移图片

要平移图片,我们需要定义下面这样一个矩阵,tx,ty是向x和y方向平移的距离:

 平移是用仿射变换函数cv2.warpAffine()实现的:

import cv2
from PIL import Image
import matplotlib.pyplot as plt
import numpy as np

# 按间距中的绿色按钮以运行脚本。
if __name__ == '__main__':
    image = cv2.imread('D:/Jupyter_Notebooks/0.jpg')

    # 获得图片的高、宽
    rows, cols = image.shape[:2]

    # 定义平移矩阵,需要是numpy的float32类型 x轴平移100,y轴平移500
    M = np.float32([[1, 0, 100], [0, 1, 200]])
    
    # 用仿射变换实现平移
    dst = cv2.warpAffine(image, M, (cols, rows))

    # cv2.imshow("image", image)
    cv2.imshow("res2", dst)

    cv2.waitKey(0)
    cv2.destroyAllWindows()

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/116734.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

百度离线人脸识别SDK

1&#xff0c;采坑备忘 &#xff08;1&#xff09;8.1版本的SDK在spring-boot接口访问第一次正常&#xff0c;第二次之后JVM会奔溃&#xff0c;可能是java gc 处理C开出的内存有问题。 换6.1.3版本的SDK。 javaWindows百度离线人脸识别SDK6.1.3-Java文档类资源-CSDN下载javaW…

Harmony/OpenHarmony应用开发-转场动画页面间转场

在全局pageTransition方法内配置页面入场和页面退场时的自定义转场动效。 说明&#xff1a;从API Version 7开始支持。开发语言ets. 名称 参数 参数描述 PageTransitionEnter { type: RouteType, duration: number, curve: Curve | string, delay: number } 设置当前页面…

1998-2014年企业绿色发展数据库

1998-2014年工业企业的排放排污和环境治理等信息数据 1、时间&#xff1a;1998-2014年 2、数据来源&#xff1a;原环保部。 3、统计字段&#xff1a;主要有企业基本信息、生产信息、水环境、大气环境&#xff0c;内容涵盖了资源利用类指标&#xff08;工业用水量、煤炭消费量…

YGG 与 Thirdverse 达成合作,将《足球小将》IP 带入 Web3

YGG 与 Thirdverse 建立了合作关系&#xff0c;Thirdverse 是一家专注于多人 VR 和 Web3 游戏的游戏工作室&#xff0c;在日本和美国分别设有办事处。 YGG 通过购买未来股权的简单协议&#xff08;SAFE&#xff09;参与了 Thirdverse 近期的 1500 万美元融资。这种合作关系将使…

FastAPI从入门到实战(16)——依赖项

依赖注入是耳熟能详的一个词了&#xff0c;听起来很复杂&#xff0c;实际上并没那么复杂&#xff0c;正常的访问需要接受各种参数来构造一个对象&#xff0c;依赖注入就变成了只接收一个实例化对象&#xff0c;主要用于共享业务逻辑、共享数据库连接、实现安全、验证、权限等相…

原油投资怎么样赚钱?原油投资赚钱技巧有哪些?

以前没有交易过原油的投资者&#xff0c;看到其他投资者从中获得了较好的盈利&#xff0c;也想通过原油投资来赚钱。那么原油投资到底能不能赚钱&#xff0c;是很多新手投资者比较想了解的问题。其实原油投资想盈利并不能全部依靠运气&#xff0c;只有掌握了原油投资赚钱技巧&a…

【Java基础】Java日志—什么是日志级别?如何配置数据源到不同的位置?配置文件内容都是什么含义?

目录 一、log4j1详情&#xff1a;记录器和日志级别 二、 log4j1详情&#xff1a;输出源【输出到不同的位置】 1、ConsoleAppender【将日志输出到控制台】 2、FileAppender【将日志输出到文件】 3、DailyRollingFileAppender【每日输出到一个新文件】 4、JDBCAppender【输…

FineReport开源报表系统-JS实现切换Tab块时进行数据联动

1. 概述 1.1 预期效果 在决策报表中&#xff0c;希望 Tab 块轮播切换时&#xff0c;可实现与报表块的数据联动。如下图所示&#xff1a; 1.2 实现思路 通过 JS 获取每个 Tab 块的轮播标题&#xff0c;转换为参数值&#xff0c;再通过控件进行界面传参&#xff0c;实现联动效果…

程序员工作五年后一般会怎样?

最近看到一些吐血言论“一个程序员工作5年后还没成为大牛&#xff0c;是不是该考虑别的路子了&#xff1f;”还有“程序员入行五年&#xff0c;有可能攒够80吗&#xff1f;”不是&#xff0c;程序员工作五年&#xff0c;是戳中了谁的痛点吗&#xff1f;&#xff1f;大家对五年经…

128页4万字某智慧能源集团数字化管理平台项目建议书

【版权声明】本资料来源网络&#xff0c;仅用于行业知识分享&#xff0c;供个人学习参考&#xff0c;请勿商用。【侵删致歉】如有侵权请联系小编&#xff0c;将在收到信息后第一时间进行删除&#xff01;完整资料领取见文末&#xff0c;部分资料内容&#xff1a; 方案设计 在当…

公司新来的软件测试工程师接私活被抓了,难怪他天天加班到凌晨

昨天和我一起进公司的测试部门同事上班接私活被老板抓了&#xff0c;这人才来不到两个月&#xff0c;每天加班到凌晨。刚开始还以为他是个卷王&#xff0c;没想到此人上班时间接单&#xff0c;用加班时间来完成公司需求&#xff0c;造成努力的假象。被老板在办公室骂了俩小时&a…

v$asm_disk中free_mb低于300m导致加盘报ora-15041

背景&#xff1a; 某项目扩容加盘到磁盘组中报磁盘组空间耗尽的错误&#xff0c;如下 明明是加盘&#xff0c;却报空间不足的错误&#xff0c;令人费解 报错的磁盘组为normal冗余&#xff0c;且Usable_file_MB为负&#xff0c;且Free_MB剩余很少或为0 问题排查&#xff1a; …

MS 训练笔记【2】:nnFormer

文章目录前言1. 安装2. 训练与测试2.1. 数据处理2.1.1. 整理数据路径2.1.2. 设置 nnFormer 读取文件的路径2.1.3. 数据集预处理2.2. 训练2.2.1. 训练代码2.2.2. 可能出现的问题及解决办法2.3. 预测总结前言 本文主要记载 nnFormer 从安装到训练再到推理的过程。nnFormer 的环境…

invokeBeanFactoryPostProcessors的理解

invokeBeanFactoryPostProcessors的理解 Spring中有两个非常重要的扩展点&#xff1a; BeanFactoryPostProcessorBeanPostProcessor 其中第一个是可以对BeanDefinition注册时进行扩展&#xff0c;而第二个是对spring中IOC容器中的对象进行实例化的时候进行扩展。 今天主要谈一…

【安全漏洞】水平权限漏洞和垂直权限漏洞

前言 权限校验非常重要。如果不对水平、垂直权限做校验&#xff0c;就会发生泄漏用户数据的事故&#xff0c;造成P0故障。 一、水平权限漏洞 1、水平权限漏洞基本概念 什么是水平权限漏洞呢&#xff1f; 简单来说&#xff0c;水平权限漏洞是用户CURD了本不属于他的资源。以上图…

复活天若OCR的谷歌翻译接口

文章目录1. 资源2. 效果3. 前言4. 网络相关4.1. 网络判断4.2. 网络设置5. 修改5.1. 代码修改原理5.2. 代码修改1. 资源 这里直接放出来我已经修改编译好的天若OCR&#xff0c;开箱即用&#xff1a;https://www.lanzoui.com/ifT8t0jfv1gd 访问码&#xff1a;24647 不过需要说明…

性能优化系列之如何为不同格式的图片选择合适的应用场景?

文章の目录一、JPEG&#xff08;Joint Photographic Experts Group&#xff09;1、介绍2、不适合情形3、非常适合的情形二、PNG&#xff08;Portable Network Graphics&#xff09;1、介绍2、不适合的情形3、非常适合的情形三、GIF&#xff08;Graphics Interchange Format&…

【nowcoder】笔试强训Day9

目录 一、选择题 二、编程题 2.1另类加法 2.2走方格的方案数 一、选择题 1.下面程序的输出是:() String x"fmn"; x.toUpperCase(); String yx.replace(f,F); yy"wxy"; System.out.println(y); A FmNwxy B fmnwxy C wxyfmn D Fmnwxy String x “…

决胜「年货时代」:一场关于零食的品质突围

“都说冰糖葫芦儿酸&#xff0c;酸里面它裹着甜&#xff1b;都说冰糖葫芦儿甜&#xff0c;可甜里面它透着那酸。” 1995年春节&#xff0c;伴随着《冰糖葫芦》唱响大街小巷&#xff0c;小贩骑着自行车&#xff0c;后车座的草靶子上插满冰糖葫芦&#xff0c;或摆在集市上&#…

大数据系列——什么是hive?hive用来干什么的?hive常见问题是啥?

目录 一、什么是hive 二、为什么要使用Hive 三、Hive与Hadoop的关系 四、Hive与HDFS的关系 五、Hive与传统数据库区别 六、Hive中的数据存储是怎样的 七、对hive进行增删改查 八、排序逻辑 九、hive不支持update数据的解决方案 十、Hive中支持的分区类型有两种 十…