使用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数据分析,人工智能、自动化办公等学习教程。

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

在这里插入图片描述

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值