【Python图像处理入门】11个核心基础操作解析!

前言:

  • Python图像处理是指利用Python编程语言及其相关的库和工具,对图像进行各种操作和处理的技术。

包含编程资料、学习路线图、源代码、软件安装包等!【点击这里】领取!!

【Python图像处理入门】11个核心基础操作解析!_第1张图片

  • 今天我们将一起探索如何使用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,图像处理,开发语言,爬虫,青少年编程,编辑器,人工智能)