Python 图像处理领域的十一个基础操作

在Python中,处理图像是一项既有趣又实用的技能。无论你是数据科学家、机器学习工程师,还是一名普通爱好者,掌握图像处理的基础操作都能为你的项目增添不少色彩。今天,我们就来聊聊Python图像处理领域的十一个基础操作。

1. 安装必要的库

首先,确保你已经安装了处理图像所需的库。最常用的库是Pillow(PIL的更新版)和OpenCV。你可以使用pip来安装它们:

pip install pillow opencv-python  

2. 打开和显示图像

使用Pillow库打开和显示图像非常简单。

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

这段代码会打开当前目录下的example.jpg文件,并使用系统默认的图像查看器显示它。

3. 读取和写入图像

Pillow库也支持读取和写入图像文件。

from PIL import Image  
  
# 读取图像  
image = Image.open('example.jpg')  
  
# 保存图像为新的文件  
image.save('new_example.jpg')  

这段代码读取example.jpg文件,并将其保存为new_example.jpg

4. 调整图像大小

调整图像大小是图像处理中的常见操作。

from PIL import Image  
  
# 打开图像  
image = Image.open('example.jpg')  
  
# 调整图像大小  
resized_image = image.resize((200, 200))  
  
# 显示调整大小后的图像  
resized_image.show()  

这段代码将图像的大小调整为200x200像素。

5. 裁剪图像

裁剪图像可以提取图像中的特定区域。

from PIL import Image  
  
# 打开图像  
image = Image.open('example.jpg')  
  
# 裁剪图像,参数为(左, 上, 右, 下)  
cropped_image = image.crop((50, 50, 200, 200))  
  
# 显示裁剪后的图像  
cropped_image.show()  

这段代码从图像的(50, 50)位置开始,裁剪出一个150x150的区域。

6. 旋转图像

旋转图像可以改变图像的视角。

from PIL import Image  
  
# 打开图像  
image = Image.open('example.jpg')  
  
# 旋转图像,参数为角度  
rotated_image = image.rotate(45)  
  
# 显示旋转后的图像  
rotated_image.show()  

这段代码将图像旋转45度。

7. 翻转图像

翻转图像可以产生镜像效果。

from PIL import Image  
  
# 打开图像  
image = Image.open('example.jpg')  
  
# 水平翻转图像  
flipped_image_horizontal = image.transpose(Image.FLIP_LEFT_RIGHT)  
  
# 垂直翻转图像  
flipped_image_vertical = image.transpose(Image.FLIP_TOP_BOTTOM)  
  
# 显示翻转后的图像  
flipped_image_horizontal.show()  
flipped_image_vertical.show()  

这段代码分别展示了如何水平翻转和垂直翻转图像。

8. 图像转灰度

将彩色图像转换为灰度图像是图像预处理中的常用步骤。

from PIL import Image  
  
# 打开图像  
image = Image.open('example.jpg')  
  
# 转换为灰度图像  
gray_image = image.convert('L')  
  
# 显示灰度图像  
gray_image.show()  

这段代码将彩色图像转换为灰度图像。

9. 图像二值化

图像二值化是将图像转换为只有黑白两种颜色的过程。

from PIL import Image  
  
# 打开图像  
image = Image.open('example.jpg')  
  
# 转换为灰度图像  
gray_image = image.convert('L')  
  
# 应用二值化,参数为阈值  
threshold = 128  
binary_image = gray_image.point(lambda x: 0 if x < threshold else 255, '1')  
  
# 显示二值化后的图像  
binary_image.show()  

这段代码首先将图像转换为灰度图像,然后应用二值化,阈值设置为128。

10. 图像模糊处理

模糊处理可以去除图像中的噪声或细节。

from PIL import Image, ImageFilter  
  
# 打开图像  
image = Image.open('example.jpg')  
  
# 应用模糊滤镜  
blurred_image = image.filter(ImageFilter.BLUR)  
  
# 显示模糊处理后的图像  
blurred_image.show()  

这段代码使用了Pillow库中的ImageFilter.BLUR滤镜来模糊图像。

11. 图像边缘检测

边缘检测是图像处理和计算机视觉中的基础操作,用于识别图像中的边缘。

import cv2  
import numpy as np  
  
# 读取图像  
image = cv2.imread('example.jpg', cv2.IMREAD_GRAYSCALE)  
  
# 应用Canny边缘检测  
edges = cv2.Canny(image, 100, 200)  
  
# 显示边缘检测后的图像  
cv2.imshow('Edges', edges)  
cv2.waitKey(0)  
cv2.destroyAllWindows()  

这段代码使用了OpenCV库来读取图像,并将其转换为灰度图像,然后应用Canny边缘检测算法。

实战案例:图像拼接

接下来,我们通过一个实战案例来展示如何应用上述知识。假设我们有两张图像,想要将它们拼接在一起。

from PIL import Image  
  
# 打开两张图像  
image1 = Image.open('image1.jpg')  
image2 = Image.open('image2.jpg')  
  
# 确保两张图像具有相同的高度  
if image1.height != image2.height:  
    image2 = image2.resize((int(image2.width * image1.height / image2.height), image1.height))  
  
# 拼接图像  
width1, height1 = image1.size  
width2, height2 = image2.size  
stitched_image = Image.new('RGB', (width1 + width2, height1))  
stitched_image.paste(image1, (0, 0))  
stitched_image.paste(image2, (width1, 0))  
  
# 显示拼接后的图像  
stitched_image.show()  

这段代码首先读取两张图像,确保它们具有相同的高度(如果不相同,则调整第二张图像的大小)。然后,创建一个新的图像来容纳拼接后的结果,并将两张图像粘贴到新图像中。

总结

在本文中,我们介绍了Python图像处理领域的十一个基础操作,包括安装必要的库、打开和显示图像、读取和写入图像、调整图像大小、裁剪图像、旋转图像、翻转图像、图像转灰度、图像二值化、图像模糊处理以及图像边缘检测。通过实际的代码示例,我们展示了每个操作是如何应用的。最后,我们通过一个实战案例------图像拼接,展示了如何将这些操作组合起来完成一个实际的图像处理任务。希望这些内容能够帮助你更好地理解和应用Python图像处理技术。

最后由于文章篇幅有限,文档资料内容较多,需要这些文档的朋友,可以加小助手微信免费获取,【保证100%免费】,中国人不骗中国人。

全套Python学习资料分享:

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,还有环境配置的教程,给大家节省了很多时间。

三、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

四、入门学习视频全套

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

五、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

最后

如果你也想自学Python,可以关注我。我会把踩过的坑分享给你,让你不要踩坑,提高学习速度,还整理出了一套系统的学习路线,这套资料涵盖了诸多学习内容:开发工具,基础视频教程,项目实战源码,51本电子书籍,100道练习题等。相信可以帮助大家在最短的时间内,能达到事半功倍效果,用来复习也是非常不错的。

希望这篇文章对你有帮助,也希望能帮到大家,因为你我都是热爱python的编程语言爱好者。

相关推荐
blues_C4 分钟前
Pytest-Bdd vs Behave:选择最适合的 Python BDD 框架
自动化测试·python·pytest·测试框架·bdd
测试杂货铺5 分钟前
Appium怎样连接多台设备?
自动化测试·软件测试·python·测试工具·职场和发展·appium·测试用例
我爱学习_zwj5 分钟前
Web APIs - 第5章笔记
开发语言·前端·javascript
我是Superman丶17 分钟前
【自动化】Python SeleniumUtil 工具 开启开发者模式 自动安装油猴用户脚本等
运维·python·自动化
往日情怀酿做酒 V176392963829 分钟前
Django基础之中间件
python·中间件·django
清弦墨客32 分钟前
【蓝桥杯】46195.水仙花数
python·蓝桥杯
小oo呆37 分钟前
【自然语言处理与大模型】Ollama拉取huggingface社区或modelscope社区的GGUF模型并部署
人工智能·python·自然语言处理
Qzer_40738 分钟前
在JVM(Java虚拟机)中,PC寄存器(Program Counter Register)扮演着至关重要的角色,它是JVM执行引擎的核心组成部分之一。
java·开发语言·jvm
星沁城40 分钟前
JVM的垃圾回收机制
java·开发语言·jvm
FF在路上1 小时前
MybatisPlus使用LambdaQueryWrapper更新时 int默认值问题
java·开发语言·mybatis