【Python】 Python 使用 Pillow 处理图像:几何变换

news2024/10/7 8:22:36

Python 使用 Pillow 处理图像:几何变换

pillow库操作切片、旋转、滤镜、输出文字、调色板等功能一应俱全。

1. 几何变换

Image 包含调整图像大小 resize() 和旋转 rotate() 的方法。前者采用元组给出新的大小,后者采用逆时针方向的角度。

调整大小并逆时针旋转 45度

from PIL import Image
from matplotlib import pyplot as plt
im=Image.open(‘./L1020120.JPG’)
o = im.resize((128, 128))
outfile= o.rotate(45)
plt.imshow(outfile)
plt.show()
在这里插入图片描述

要以90度为单位旋转图像,可以使用 rotate() 或 transpose() 方法。后者也可用于围绕其水平轴或垂直轴翻转图像。

FLIP_LEFT_RIGHT 水平左右翻转

Image.FLIP_TOP_BOTTOM 垂直上下翻转

Image.ROTATE_90 逆时针90度

Image.ROTATE_180 逆时针180度

Image.ROTATE_270 逆时针270度

更多的api可以查看官方文档和源码。

2. 剪贴,粘贴、合并图像

Image类包含允许您操作图像中的区域的方法。如:要从图像中复制子矩形图像使用 crop() 方法。

从图像复制子矩形

1.截取矩形图像

im=Image.open(‘L1020120.JPG’)
box = (100, 100, 400, 500)
region = im.crop(box)
plt.imshow(region)
plt.show()
_images/sec03_pillow-geom_5_0.png
定义box元组,图像基于左上角为(0,0)的坐标,box 坐标为 (左,上,右,下)。注意,坐标是基于像素。示例中为 300 * 400 像素。

2.先将复制的内容颠倒180度,在原图上粘贴子矩形图像

粘贴时要注意几点。选择好想要粘贴的位置,paste() 方法的两个参数依次是处理后的图片;以及图片的位置,同样为(左,上,右,下),不过,他们的值的间距为图片的像素(也就是确定好左上角的点后,分别加上像素值),不可调整。

将我们复制的图片旋转180度

region = region.transpose(Image.ROTATE_180)
定义要粘贴的位置。

box = (100, 100, 400, 500)
将子图(region) 粘贴(paste)回原图时,粘贴位置 box 的像素与宽高必须吻合。而原图和子图的 mode 不需要匹配,Pillow会自动处理。

im.paste(region, box)
plt.imshow(im)
plt.show()
_images/sec03_pillow-geom_11_0.png
region = region.transpose(Image.ROTATE_180)
box = (200, 200, 500, 600)
im.paste(region, box)
plt.imshow(im)
plt.show()
在这里插入图片描述

3.移动图像

移动图像就是将图片复制再粘贴。看起就像移动。

image_path = ‘L1020120.JPG’
im = Image.open(image_path)
设置想要偏转的像素值。

delta=200
xsize, ysize = im.size
print(im.size)
(1000, 734)
移动图片通常都是在X轴的方向上进行处理,我们设置的偏移值为200个像素,比X轴的值小所以可以直接处理,但是如果是移动2000个像素呢,可能就会出现错误,所以我们对他进行求余处理,也就是将图片移动了多个周期,依旧是2000时,我们需要移动的就是144个像素。

delta = delta % xsize
if delta == 0:
plt.imshow(im)
plt.show()
将确定好的位置复制下来,在重新组成一幅图片,视觉上看就像是图片在移动。

part1 = im.crop((0, 0, delta, ysize))
part2 = im.crop((delta, 0, xsize, ysize))
im.paste(part1, (xsize - delta, 0, xsize, ysize))
im.paste(part2, (0, 0, xsize - delta, ysize))
plt.imshow(im)
plt.show()

在这里插入图片描述

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

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

相关文章

视频批量剪辑:AI智剪入门,轻松掌握智能剪辑技巧

在数字媒体时代,视频剪辑已经成为一项必备的技能。无论是为了工作需要,还是为了在社交媒体上分享生活,掌握视频剪辑技巧都能为我们的生活和工作带来很多便利。然而,对于初学者来说,视频剪辑可能是一项艰巨的任务。现在…

1210. 连号区间数(枚举)

题目: 1210. 连号区间数 - AcWing题库 思路:枚举 枚举一般是先暴力再优化。 注意:对于区间的枚举,一般是定一移一。固定任何一端移动另外一端均可以。但是此题为便于在枚举移动端的过程中确定最大最小,选择定左移右…

银行测试丨信贷长链路业务测试数据快速构造方法,了解一下

一、引言 随着银行数字化转型的不断深入,对信贷领域的测试工作提出了更高的标准和要求,如何在高效完成测试任务的同时确保测试质量就成了一个亟待解决的难题。有实践研究表明,在具体测试过程中往往大量的时间精力都是耗费在测试数据准备工作…

原神私服搭建服务器配置该如何选择

原神是一款开放世界的冒险游戏,自从这款游戏上线以来,就受到越来越多的玩家喜欢,因为这款游戏的设定比较少见,剧情也非常精彩,有一些玩家为了更好的游戏体验想要搭建原神的私服,满足玩家的需求,…

【云栖2023】王峰:开源大数据平台3.0技术解读

本文根据2023云栖大会演讲实录整理而成,演讲信息如下: 演讲人:王峰 | 阿里云研究员,阿里云计算平台事业部开源大数据平台负责人 演讲主题:开源大数据平台3.0技术解读 实时化与Serverless是开源大数据3.0时代的必然选…

提升采购订单管理效率的五个最佳实践

企业每年都要订购成千上万的商品和服务。公司运营和发展所需的一切都来自庞大的供应商网络,而沟通这些需求的主要方式是通过采购订单。 由于所有订单都会流经系统,而且每个月都会发生数千元不等的供应支出,因此掌握采购订单流程成为重中之重…

2023年云计算发展趋势浅析

​​​​​​​ 云计算的概念 云计算是一种通过互联网提供计算资源和服务的模式。它允许用户通过网络访问和使用共享的计算资源,而无需拥有或管理这些资源的物理设备。云计算的核心理念是将计算能力、存储资源和应用程序提供给用户,以便随时随地根据需要…

Ubuntu18.04 安装docker教程

Ubuntu18.04 安装docker教程 1、前言 Docker Engine-Community 支持以下的 Ubuntu 版本: Xenial 16.04 (LTS)Bionic 18.04 (LTS)Cosmic 18.10Disco 19.04 Docker Engine-Community 支持以下CPU架构: x86_64(或 amd64)armhfarm…

Win10共享打印机,别人连接不上出现无法连接到打印机错误码0x0000011b

环境: Win10 专业版 惠普L1119 问题描述: Win10共享打印机,别人连接不上出现无法连接到打印机错误码0x0000011b 解决方案: 1.打开我这台电脑的注册表找到 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Print在右侧…

Google Analytics优缺点分析

Google Analytics是一款广泛使用的网站分析工具,它能够帮助网站和应用程序的拥有者收集和分析数据,并提供有关用户行为、流量来源和转化率等方面的详细见解。本文小编将讲讲关于Google Analytics的优缺点分析。 一、Google Analytics优点 1、免费使用&a…

如何在Linux上部署1Panel运维管理面板并远程访问内网进行操作

文章目录 前言1. Linux 安装1Panel2. 安装cpolar内网穿透3. 配置1Panel公网访问地址4. 公网远程访问1Panel管理界面5. 固定1Panel公网地址 前言 1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。高效管理,通过 Web 端轻松管理 Linux 服务器,包括主机监控、…

STM32H563烧录后无法擦除

STM32H563烧录后无法擦除,使用STM32CubeProgrammer连接后显示如下图所示。

Harmony 应用开发的知识储备

Harmony 应用开发的知识储备 前言正文一、DevEco Studio版本二、手机版本① 环境变量 三、API版本四、开发语言五、运行调试 前言 这里先说明一点,如果你对Android应用开发很熟悉,那么做Harmony应用开发也可以驾轻就熟,只不过在此之前你需要知…

bat脚本批量修改文件名称的方法,以及乱码问题解决

当有大量的文件,需要按照对应数据进行文件名称的修改时候,用bat脚本,是一个快速,并且简单的方法。 使用命令 “"ren "&A2&" "&D2&""” 其中A2为需要修改的单元格,D2为…

微信超实用的小功能

微信真的有超多实用小功能 平时很少注意到,每次都用传统的方法解决,浪费人家研发人员的一片苦心~ 1重要事项提醒:健忘症的福音; 步骤:长按消息-提醒-设置。 2 图片翻译:不用跳转翻译软件,一键翻…

卷积神经网络中参数量的计算原理及方法

手动计算参数量: 1. 卷积层参数计算方法: 参数量计算公式 卷积核宽度 * 卷积核高度 * 输入层通道数 * 输出层通道数 bias(输出层通道数) 注意:池化层没有参数(只是在已知数据区域里求个最大值)输入层通道数就是上层的卷积核数量 输出层通道数等于卷积核个数:输入层通道数经过…

双十一“静悄悄”?VR购物拉满沉浸式购物体验

以往每年的双十一,都会因为电商购物狂欢而变得热闹非凡,而各大电商平台也会在这天推出各种促销活动。但是,近几年来,双十一正在变得“静悄悄”。一个原因是消费群体越发理性消费,更加重视商品本身的质量和体验&#xf…

maven-compiler-plugin和spring-boot-maven-plugin的区别

两者都能打包!!!!!!! 格式不同!!!用处不同!!! 以实验为准,下面开始实验: maven-compiler-plugin &…

基于SSM的汽车租赁系统业务管理子系统设计实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

[每周一更]-(第71期):DevOps 是什么?

Wiki的解释: DevOps(Development和Operations的混成词)是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。 通过自动化“软件交付”和“架构变更”的…