page contents

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

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

attachments-2024-09-s9Wbxu4h66eb7e4faea90.png今天我们将一起探索如何使用 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. 添加文本信息

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

# 创建绘图对象

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. 绘制文本:使用 ImageDraw 和 ImageFont 绘制名字和职位信息。 6. 应用滤镜:使用 filter 方法为背景图片添加模糊滤镜效果。

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

更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

  • 发表于 2024-09-19 09:29
  • 阅读 ( 45 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
小柒
小柒

1470 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1470 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章