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

Python图像处理库PIL,实现旋转缩放、剪切拼接以及滤波

文章目录

    • 切割缩放和旋转
    • 拼接

PIL的Image类,提供了一些常用的图像处理方法。

切割缩放和旋转

PIL可以很方便地实现如下效果

在这里插入图片描述
代码如下

from PIL import Image
path = 'lena.jpg'
img = Image.open(path)  # 读取
img.resize((50, 50), resample=Image.Resampling.NEAREST).save("resize.png")
img.crop((0, 0, 200, 200)).save('crop.png')    # 截取
img.rotate(60).save("rotate.png")

【resize】为缩放函数,其首个参数为缩放后的尺寸。图像经过缩放之后,像素个数会发生变化,resample参数可以指定其填充像素的方法,支持的参数类型是Image中的枚举格式Resampling,默认为双三次插值BICUBIC,此外,还支持最邻近插值NEAREST;双线性插值BILINEAR;汉明插值HAMMING;以及BOX插值和LANCZOS插值。BOX插值在图像放大时与NEAREST相同,压缩时采取附近像素的平均值。

【crop】为裁切函数,输入参数为左、上、右、下端点处的像素坐标。

【routate】为旋转函数,输入为旋转角度。

滤波

filter方法可以实现图像滤波,效果如下

在这里插入图片描述
这些效果都是通过ImageFilter中预定义的滤波类实现的,代码如下

from PIL import ImageFilterimg.filter(ImageFilter.BLUR).save("BLUR.png")
img.filter(ImageFilter.CONTOUR).save("CONTOUR.png")
img.filter(ImageFilter.FIND_EDGES).save("FIND_EDGES.png")

这些滤波类没有参数,可以直接调用

  • 【BLUR】模糊
  • 【CONTOUR】提取轮廓
  • 【DETAIL】貌似没什么变化
  • 【EDGE_ENHANCE】边缘增强
  • 【EDGE_ENHANCE_MORE】边缘更增强
  • 【EMBOSS】浮雕
  • 【FIND_EDGES】边缘查找
  • 【SHARPEN】锐化
  • 【SMOOTH】平滑
  • 【SMOOTH_MORE】更加平滑

拼接

上面那张由三种不同滤波组合而成的图像,也可以通过PIL来生成,代码如下

pImg = Image.new("RGB", size=(1536, 512))
pImg.paste(img.filter(ImageFilter.BLUR), (0, 0, 512, 512))
pImg.paste(img.filter(ImageFilter.FIND_EDGES), (512, 0, 1024, 512))
pImg.paste(img.filter(ImageFilter.CONTOUR), (1024, 0, 1536, 512))
pImg.save("pImg.png")

【new】可以生成一张新的图像,第一个参数是图像的色彩模式。

【paste】可将一张图像,粘贴到当前图像中,必须注意,这个方法会修改当前图像的值。其第一个输入参数,就是准备贴入的图像,第二个参数粘贴位置。

http://www.lryc.cn/news/472589.html

相关文章:

  • xhr的readyState和status
  • Rust 力扣 - 238. 除自身以外数组的乘积
  • 【Vue框架】基础语法练习(1)
  • 开源一款基于 JAVA 的仓库管理系统,支持三方物流和厂内物流,包含 PDA 和 WEB 端的源码
  • 开源一套基于若依的wms仓库管理系统,支持lodop和网页打印入库单、出库单的源码
  • HTML+JavaScript案例分享: 打造经典俄罗斯方块,详解实现全过程
  • 【网页布局技术】项目五 使用CSS设置导航栏
  • 自学网络安全,网络安全入门学习路线,收藏这篇就够了
  • React Query已过时?新一代请求工具横空出世
  • 视频怎么进行格式转换?6款视频转换MP4格式的免费软件!
  • 智能文档处理平台:免费体验智能化医疗信息提取
  • Java 中 InputStream 的使用:try-with-resources 与传统方式的比较
  • 【MATLAB源码-第271期】基于matlab的雷达发射回波模拟,包括匹配滤波,加窗旁瓣控制,以及MTD处理。
  • Linux系统编程——信号量
  • Oracle索引问题汇总
  • 基于QT用工厂模式实现串口通信与网络通信激光器的控制
  • 【代码随想录Day58】图论Part09
  • _或者%关键字模糊匹配查出所有数据
  • 【Python】转换得到图片的rgb565格式数据
  • 隨筆 20241024 Kafka中的ISR列表:分区副本的族谱
  • 【python】爬虫
  • 大语言模型数据类型与环境安装(llama3模型)
  • JS:列表操作
  • ECharts 折线图 / 柱状图 ,通用配置标注示例
  • 统计数据集的TXT、XML及JSON标注文件中各类别/每个标签的数量
  • Facebook登录客户追踪:了解用户访问路径,优化客户体验
  • NUUO摄像头 debugging_center_utils 远程命令执行漏洞复现
  • Nginx 的讲解和案例示范
  • 微信小程序元素水平居中或垂直居中
  • ClickHouse 神助攻:纽约城市公共交通管理(MTA)数据应用挑战赛