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

使用Python进行图像处理的11个基本操作

文末附Python编程资料~~

大家好!今天我们将一起探索如何使用 Python 进行图像处理。Python 是一种非常强大的编程语言,尤其适合图像处理。我们将使用 Pillow 库来完成这些任务。如果你还没有安装这个库,可以通过下面的命令安装:

pip install pillow  

1. 导入图像

首先,我们需要导入一张图片。这里以一张名为 example.jpg 的图片为例。

from PIL import Image  # 打开图片  
img = Image.open('example.jpg')  # 显示图片  
img.show()  

这段代码首先导入了 Image 类,然后使用 open 方法打开图片,并使用 show 方法显示它。

2. 获取图像尺寸

获取图片的宽度和高度是图像处理中最常见的需求之一。

width, height = img.size  
print(f"图片尺寸: {width}x{height}")  

size 属性返回一个元组,表示图片的宽度和高度。

3. 裁剪图像

裁剪可以用来移除图片中不需要的部分。

# 裁剪参数:左上角坐标 (left, top) 和右下角坐标 (right, bottom)  
cropped_img = img.crop((50, 50, 200, 200))  
cropped_img.show()  

这里将图片从 (50, 50)(200, 200) 区域裁剪下来。

4. 图像缩放

有时候我们需要调整图片大小,使其更适合特定的应用场景。

resized_img = img.resize((400, 400))  
resized_img.show()  

resize 方法接受一个元组作为参数,表示新的宽度和高度。

5. 图像旋转

旋转图片可以帮助我们改变图片的方向。

rotated_img = img.rotate(90)  # 逆时针旋转 90 度  
rotated_img.show()  

rotate 方法接受一个角度值,表示旋转的角度。

6. 图像翻转

翻转可以分为水平翻转和垂直翻转两种。

# 水平翻转  
flipped_horizontal = img.transpose(Image.FLIP_LEFT_RIGHT)  
flipped_horizontal.show()  # 垂直翻转  
flipped_vertical = img.transpose(Image.FLIP_TOP_BOTTOM)  
flipped_vertical.show()  

transpose 方法提供了多种翻转方式,FLIP_LEFT_RIGHT 表示水平翻转,FLIP_TOP_BOTTOM 表示垂直翻转。

7. 改变颜色模式

有时候我们需要将图片转换为灰度图或黑白图。

# 转换为灰度图  
gray_img = img.convert('L')  
gray_img.show()  # 转换为黑白图  
bw_img = img.convert('1')  
bw_img.show()  

convert 方法接受一个模式字符串作为参数,'L' 表示灰度图,'1' 表示黑白图。

8. 添加边框

给图片添加边框可以让图片看起来更加美观。

bordered_img = ImageOps.expand(img, border=10, fill='red')  
bordered_img.show()  

expand 方法接受三个参数:原始图片、边框宽度和填充颜色。

9. 图像合成

我们可以将两张图片合并在一起,创建出新的效果。

from PIL import ImageDraw  # 打开另一张图片  
overlay_img = Image.open('overlay.png')  # 创建一个新的空白图像  
result = Image.new('RGB', img.size)  # 将两张图片粘贴到新图像上  
result.paste(img, (0, 0))  
result.paste(overlay_img, (0, 0), overlay_img)  result.show()  

这里使用 paste 方法将两张图片粘贴到一个新的空白图像上,第二张图片会覆盖第一张图片。

10. 图像拼接

拼接多张图片可以让它们排列在一起。

# 创建一个新的空白图像  
new_img = Image.new('RGB', (img.width * 2, img.height))  # 将两张图片拼接在一起  
new_img.paste(img, (0, 0))  
new_img.paste(img, (img.width, 0))  new_img.show()  

这段代码将两张相同大小的图片拼接在一起,形成了一张宽两倍的新图片。

11. 图像滤镜

使用滤镜可以快速地改变图片的效果。

from PIL import ImageFilter  # 应用模糊滤镜  
blurred_img = img.filter(ImageFilter.BLUR)  
blurred_img.show()  # 应用锐化滤镜  
sharpened_img = img.filter(ImageFilter.SHARPEN)  
sharpened_img.show()  

************************************************### 使用Python进行图像处理的11个基本操作(二)

在第一部分中,我们介绍了使用 Python 和 Pillow 库进行图像处理的基本操作,包括导入图像、获取图像尺寸、裁剪图像、图像缩放、图像旋转、图像翻转、改变颜色模式、添加边框、图像合成、图像拼接以及应用滤镜。接下来,我们将通过一个实际场景的实战案例来进一步巩固这些知识点。

实战案例:制作个性化名片

假设我们要为一家公司设计一套个性化的名片模板。名片模板应该包含员工的照片、姓名、职位等信息。我们将使用前面学到的操作来实现这一目标。

1. 准备素材

首先,我们需要准备以下素材:

  • 一张背景图片(例如 background.jpg)。

  • 一张员工照片(例如 employee.jpg)。

  • 名字和职位信息(例如 “John Doe” 和 “Software Engineer”)。

2. 导入必要的库和图片

from PIL import Image, ImageDraw, ImageFont  # 打开背景图片  
background = Image.open('background.jpg')  # 打开员工照片  
photo = Image.open('employee.jpg')  

3. 调整员工照片大小并添加边框

为了让照片更好地适应名片的大小,我们需要先调整照片的尺寸,并为其添加边框。

# 调整照片大小  
photo_resized = photo.resize((200, 200))  # 添加边框  
photo_bordered = ImageOps.expand(photo_resized, border=10, fill='white')  

4. 在背景图片上粘贴照片

接下来,我们需要将调整好的照片粘贴到背景图片上的指定位置。

# 粘贴照片  
background.paste(photo_bordered, (50, 50), photo_bordered)  

5. 添加文本信息

为了在名片上添加名字和职位信息,我们需要使用 ImageDrawImageFont 来绘制文本。

# 创建绘图对象  
draw = ImageDraw.Draw(background)  # 设置字体  
font = ImageFont.truetype('arial.ttf', 36)  # 绘制名字  
name_text = 'John Doe'  
draw.text((300, 100), name_text, font=font, fill=(0, 0, 0))  # 绘制职位  
position_text = 'Software Engineer'  
draw.text((300, 150), position_text, font=font, fill=(0, 0, 0))  

6. 应用滤镜效果

为了让名片看起来更有质感,我们可以为背景图片添加一些滤镜效果。

# 应用模糊滤镜  
background_blurred = background.filter(ImageFilter.BLUR)  

7. 显示最终结果

最后,我们可以显示生成的名片模板。

background_blurred.show()  

完整代码

下面是完整的代码示例:

from PIL import Image, ImageDraw, ImageFont, ImageOps, ImageFilter  # 打开背景图片  
background = Image.open('background.jpg')  # 打开员工照片  
photo = Image.open('employee.jpg')  # 调整照片大小  
photo_resized = photo.resize((200, 200))  # 添加边框  
photo_bordered = ImageOps.expand(photo_resized, border=10, fill='white')  # 粘贴照片  
background.paste(photo_bordered, (50, 50), photo_bordered)  # 创建绘图对象  
draw = ImageDraw.Draw(background)  # 设置字体  
font = ImageFont.truetype('arial.ttf', 36)  # 绘制名字  
name_text = 'John Doe'  
draw.text((300, 100), name_text, font=font, fill=(0, 0, 0))  # 绘制职位  
position_text = 'Software Engineer'  
draw.text((300, 150), position_text, font=font, fill=(0, 0, 0))  # 应用模糊滤镜  
background_blurred = background.filter(ImageFilter.BLUR)  # 显示最终结果  
background_blurred.show()  

分析

在这个实战案例中,我们综合运用了前面介绍的各种图像处理技术: 1. 导入图片:使用 Image.open 方法导入背景图片和员工照片。 2. 调整大小:使用 resize 方法调整照片的大小。 3. 添加边框:使用 ImageOps.expand 方法为照片添加边框。 4. 粘贴图片:使用 paste 方法将照片粘贴到背景图片上。 5. 绘制文本:使用 ImageDrawImageFont 绘制名字和职位信息。 6. 应用滤镜:使用 filter 方法为背景图片添加模糊滤镜效果。

通过这个案例,我们可以看到如何将多个图像处理技术结合起来,实现一个实用的功能。希望这个实战案例能够帮助大家更好地理解和掌握 Python 图像处理的基础知识。

好了,今天的分享就到这里了,我们下期见。如果本文对你有帮助,请动动你可爱的小手指点赞、收藏吧!

文末福利

最后,如果你对Python感兴趣的话,可以试试我整理的这一份全套的Python学习资料,【点击这里】免费领取!

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。

也可以微信扫描下方CSDN官方认证二维码免费获取【保证100%免费】。

在这里插入图片描述

① Python所有方向的学习路线图,清楚各个方向要学什么东西
② 100多节Python课程视频,涵盖必备基础、爬虫和数据分析
③ 100多个Python实战案例,学习不再是只会理论
④ 华为出品独家Python漫画教程,手机也能学习
在这里插入图片描述


http://www.mrgr.cn/news/30908.html

相关文章:

  • 【月之暗面kimi-注册/登录安全分析报告】
  • 【JAVA】正则表达式中的捕获组和非捕获组
  • 13、指向Member Function的指针
  • 点云论文阅读-1-pointnet++
  • jmeter基础05_第1个http请求
  • linux基础-完结(详讲补充)
  • 常用函数式接口的使用
  • SpringBoot开发——整合SpringDoc实现在线接口文档
  • 一文搞懂软著申请细则!
  • 上海市计算机学会竞赛平台2024年7月月赛丙组子集归零
  • 数据库数据恢复—SQL Server附加数据库出现“错误823”怎么恢复数据?
  • 编程的魅力
  • 灵当CRM系统index.php存在SQL注入漏洞
  • 由一个 SwiftData “诡异”运行时崩溃而引发的钩深索隐(六)
  • 计算机知识包括哪些和应用?
  • 如何通过全面技术方案与灵活商务服务引领实时云渲染的未来?
  • 滚雪球学SpringCloud[6.2讲]: Zipkin:分布式追踪系统详解
  • 30个小米集团芯片工程师岗位面试真题
  • VMware Fusion 虚拟机Mac版 安装CentOS8 系统教程
  • 教你在本地部署AI大模型,效果很赞!
  • GEE教程:对降水数据进行重投影(将10000m分辨率提高到30m)
  • 微信小程序自定义navigationBar顶部导航栏(背景图片)适配所有机型,使用tdesign-miniprogram t-navbar设置背景图片
  • 中国光刻机突破28nm?进步巨大但前路漫漫
  • Go语言并发模式详解:深入理解管道与上下文的高级用法
  • STM32调试TIC12400笔记
  • 大模型之RAG-关键字检索的认识与实战(混合检索进阶储备)