首页 > 编程语言 >Python图像处理库PIL,实现旋转缩放、剪切拼接以及滤波

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

时间:2024-11-03 11:16:33浏览次数:5  
标签:PIL img 缩放 Python ImageFilter filter save png

文章目录

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 ImageFilter

img.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】可将一张图像,粘贴到当前图像中,必须注意,这个方法会修改当前图像的值。其第一个输入参数,就是准备贴入的图像,第二个参数粘贴位置。

标签:PIL,img,缩放,Python,ImageFilter,filter,save,png
From: https://blog.csdn.net/m0_37816922/article/details/143324962

相关文章

  • Python模拟真人动态生成鼠标滑动路径
    一.简介鼠标轨迹算法是一种模拟人类鼠标操作的程序,它能够模拟出自然而真实的鼠标移动路径。鼠标轨迹算法的底层实现采用C/C++语言,原因在于C/C++提供了高性能的执行能力和直接访问操作系统底层资源的能力。鼠标轨迹算法具有以下优势:模拟人工轨迹:算法能够模拟出非贝塞尔曲线的......
  • 数字信号处理Python示例(3)生成三相正弦信号
    文章目录前言一、三相正弦信号的表示二、生成三相正弦信号的Python代码三、三相正弦信号的图示与分析四、生成幅度不相等的三相正弦信号的Python代码五、幅度不相等的三相正弦信号的图示与分析写在后面的话前言首先给出三相正弦信号的数学表达式,并给出生成三相正弦......
  • python-14-函数详解(定义、参数、返回值、高级函数、偏函数、装饰器)
    python函数详解(定义、参数、返回值、高级函数、偏函数、装饰器)一.说明这是python中的基础系列中的关于函数部分,来开始我们今天日拱一卒!对python函数部分进行详细整理和学习。二.定义在Python中,函数是通过def关键字来定义函数;函数定义的结构如下deffunction_name......
  • Geogebra基础篇019—Geogebra的移动工具(单选、框选、沿点线面体拖动、自由旋转、指定
    注意:关注微信公众号“第五智能”,免费查阅全系列文章(或者微信顶部直接搜索“Geogebra的移动工具”就可以找到了)。关于Geogebra移动工具的知识还是比较繁琐的,比如视图中的对象,大家都知道点击单选,但是怎么框选呢?怎么横移画布、怎么沿点拖动、沿线拖动、沿面拖动、甚至是沿体积......
  • 基于SpringBoot乡村书屋小程序设计与实现--31881(免费领源码)可做计算机毕业设计JAVA、P
    摘要随着信息技术的快速发展和互联网的广泛普及,数字化服务的需求不断增长,乡村书屋作为传统的文化服务机构也需要适应这一变革。本研究将使用Java开发技术,通过springboot作为框架,结合微信小程序,和MySQL作为数据存储的技术,开发一套功能齐备可移动的乡村书屋小程序,旨在提升乡......
  • 【STM32 Blue Pill编程实例】-4位7段数码管使用
    4位7段数码管使用文章目录4位7段数码管使用1、7段数码介绍2、硬件准备与接线3、模块配置4、代码实现在本文中,我们将介绍如何将STM32BluePill开发板与4位7段数码管连接,并在STM32CubeIDE中对其进行编程。在文章中首先将介绍4位7段数码管及其与......
  • (免费源码)计算机毕业设计必看必学 原创定制程序 java、PHP、python、小程序、文案全套
    摘 要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,山西能源学院教室管理系统当然也不能排除在外。山西能源学院教室管理系统是以实际运用为开发背景,运用软件工程原理和开发方法,采用 SSM技术构建的一个管理系......
  • 基于django框架在线图书推荐系统的设计与实现 python个性化图书/书籍/电子书推荐系统
    基于django框架在线图书推荐系统的设计与实现python个性化图书/书籍/电子书推荐系统平均加权混合推荐热门推荐协同过滤算法推荐爬虫排行榜数据可视化分析机器学习深度学习大数据一、项目简介1、开发工具和使用技术Pycharm、Python3及以上版本,Django3.6及以上版......