网站首页 > 技术文章 正文
在Python中提供了很多的图像处理库来支持图像处理操作。下面我们就来看看在Python中常用的图像处理库以及其如何进行图像处理。
Pillow
Pillow图像处理库是Python Imaging Library (PIL)处理库的一个分支库,它支持基本的图像处理功能,例如对图像的裁剪、图像大小调整、图像旋转、添加滤镜等操作功能。我们可以通过如下的命令来安装并且使用这个图像处理库。
pip install Pillow
示例代码
from PIL import Image, ImageFilter
# 打开图像
image = Image.open("example.jpg")
# 显示图像
image.show()
# 图像转换为灰度
gray_image = image.convert("L")
gray_image.show()
# 图像裁剪
cropped_image = image.crop((100, 100, 400, 400))
cropped_image.show()
# 图像缩放
resized_image = image.resize((200, 200))
resized_image.show()
# 图像旋转
rotated_image = image.rotate(45)
rotated_image.show()
# 应用模糊滤镜
blurred_image = image.filter(ImageFilter.BLUR)
blurred_image.show()
OpenCV
OpenCV是一个比较经典并且功能强大的计算机视觉库,OpenCV库提供了大量的图像处理功能,例如对于图像的如边缘检测、形态学操作、颜色空间转换等,我们可以通过如下的操作来对其进行安装。
pip install opencv-python
示例代码
import cv2
# 读取图像
image = cv2.imread("example.jpg")
# 显示图像
cv2.imshow("Original Image", image)
cv2.waitKey(0)
# 图像转换为灰度
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
cv2.imshow("Gray Image", gray_image)
cv2.waitKey(0)
# 图像模糊处理
blurred_image = cv2.GaussianBlur(image, (15, 15), 0)
cv2.imshow("Blurred Image", blurred_image)
cv2.waitKey(0)
# 图像边缘检测
edges = cv2.Canny(image, 100, 200)
cv2.imshow("Edges", edges)
cv2.waitKey(0)
# 释放窗口
cv2.destroyAllWindows()
Matplotlib
Matplotlib库其实主要的作用是用于数据可视化的数据处理,但是这个库也支持了对于简单的图像处理和显示功能,如下所示,我们可以通过如下命令进行安装并且使用相关的操作。
pip install matplotlib
示例代码
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
# 读取图像
image = mpimg.imread("example.jpg")
# 显示图像
plt.imshow(image)
plt.axis('off') # 隐藏坐标轴
plt.show()
# 显示灰度图像
gray_image = image.mean(axis=2)
plt.imshow(gray_image, cmap='gray')
plt.axis('off')
plt.show()
scikit-image
scikit-image是一个用于图像处理的高级库,在这个库中提供了大量的图像处理算法支持,例如对于图像的分割、图像滤波、图像几何变换等操作功能,我们可以通过如下的命令来安装并且使用对应的处理库。
pip install scikit-image
示例代码
from skimage import io, color, filters
# 读取图像
image = io.imread("example.jpg")
# 显示原图
io.imshow(image)
io.show()
# 转换为灰度图像
gray_image = color.rgb2gray(image)
io.imshow(gray_image)
io.show()
# 边缘检测
edges = filters.sobel(gray_image)
io.imshow(edges)
io.show()
总结
上面提到的这些图像处理库,各自有各自的优势,至于选择哪一个取决于我们在实际使用过程中的具体需求。如果需要基本的图像处理功能,Pillow 是一个很好的选择。如果需要更多的计算机视觉功能,OpenCV 是更合适的选择。
猜你喜欢
- 2024-09-11 给3D Slicer添加Python第三方插件库
- 2024-09-11 使用Python创建自己的Instagram滤镜
- 2024-09-11 薅羊毛我愿称Python为最强,Python 自动化带你轻松赚钱
- 2024-09-11 史上最全的OpenCV入门教程!这篇够你学习半个月了!万字长文入门
- 2024-09-11 使用python实现简易的人脸检测(python人脸检测106关键点)
- 2024-09-11 机器视觉技术(一)边缘提取(机器视觉边缘检测)
- 2024-09-11 Python-OpenCV 16. 图像特征检测与描述算法
- 2024-09-11 Flask—远程查看行空板USB摄像头视频
- 2024-09-11 OpenCV+Python识别车牌和字符分割的实现
- 2024-09-11 在Fedora中安装OpenCV-Python | 二
- 02-21走进git时代, 你该怎么玩?_gits
- 02-21GitHub是什么?它可不仅仅是云中的Git版本控制器
- 02-21Git常用操作总结_git基本用法
- 02-21为什么互联网巨头使用Git而放弃SVN?(含核心命令与原理)
- 02-21Git 高级用法,喜欢就拿去用_git基本用法
- 02-21Git常用命令和Git团队使用规范指南
- 02-21总结几个常用的Git命令的使用方法
- 02-21Git工作原理和常用指令_git原理详解
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)