10 个 Python 图像处理工具

这些 Python 库提供了一种简单直观的方式来转换图像并理解底层数据。
272 位读者喜欢这篇文章。
10 ways the GIMP image editor changed my life

Alexandre Duret-Lutz 来自法国巴黎 (Recursive Daisy), CC BY-SA 2.0 通过 Wikimedia Commons

当今世界充满了数据,图像构成了这些数据的重要组成部分。然而,在可以使用之前,这些数字图像必须经过处理——分析和操作,以提高其质量或提取一些可以利用的信息。

常见的图像处理任务包括:显示;基本操作,如裁剪、翻转、旋转等;图像分割、分类和特征提取;图像恢复;以及图像识别。Python 是这些类型的图像处理任务的绝佳选择,因为它作为一种科学编程语言越来越受欢迎,并且在其生态系统中免费提供了许多最先进的图像处理工具。

本文介绍了 10 个最常用的 Python 库,用于图像处理任务。这些库提供了一种简单直观的方式来转换图像并理解底层数据。

1. scikit-image

scikit-image 是一个开源 Python 包,可与 NumPy 数组一起使用。它实现了用于研究、教育和工业应用的算法和实用程序。即使对于那些刚接触 Python 生态系统的人来说,它也是一个相当简单明了的库。代码质量高,经过同行评审,并由活跃的志愿者社区编写。

资源

scikit-image 具有非常完善的 文档,其中包含大量示例和实际用例。

用法

该包作为 skimage 导入,大多数函数都位于子模块中。 

图像滤波

import matplotlib.pyplot as plt   
%matplotlib inline
        
from skimage import data,filters
        
image = data.coins()   # ... or any other NumPy array!  
edges = filters.sobel(image)  
plt.imshow(edges, cmap='gray')

Image filtering in scikit-image

使用 match_template 函数进行模板匹配

Template matching in scikit-image

您可以在 图库 中找到更多示例。

2. NumPy

NumPy 是 Python 编程中的核心库之一,并提供对数组的支持。图像本质上是一个标准的 NumPy 数组,其中包含数据点的像素。因此,通过使用基本的 NumPy 操作,例如切片、掩码和花式索引,您可以修改图像的像素值。可以使用 skimage 加载图像,并使用 Matplotlib 显示图像。

资源

NumPy 的 官方文档页面 上提供了完整的资源和文档列表。

用法

使用 Numpy 掩盖图像

import numpy as np
from skimage import data
import matplotlib.pyplot as plt 
%matplotlib inline
    
image = data.camera()  
type(image)
numpy.ndarray #Image is a NumPy array: 

mask = image < 87  
image[mask]=255  
plt.imshow(image, cmap='gray')

 

NumPy

3. SciPy

SciPy 是 Python 的另一个核心科学模块(如 NumPy),可用于基本的图像处理和处理任务。特别是,子模块 scipy.ndimage (在 SciPy v1.1.0 中) 提供了对 n 维 NumPy 数组进行操作的函数。该软件包目前包括用于线性和非线性滤波、二值形态学、B 样条插值和对象测量的函数。

资源

有关 scipy.ndimage 包提供的完整函数列表,请参阅 文档

用法

使用 SciPy 通过 高斯滤波器 进行模糊处理

from scipy import misc,ndimage
    
face = misc.face()  
blurred_face = ndimage.gaussian_filter(face, sigma=3)  
very_blurred = ndimage.gaussian_filter(face, sigma=5)
   
#Results  
plt.imshow(<image to be displayed>)

Using a Gaussian filter in SciPy

4. PIL/Pillow

PIL (Python Imaging Library) 是 Python 编程语言的免费库,增加了对打开、操作和保存许多不同图像文件格式的支持。然而,它的开发已经停滞不前,最后一次发布是在 2009 年。幸运的是,有 Pillow,它是 PIL 的一个积极开发的 fork,更容易安装,可以在所有主要操作系统上运行,并支持 Python 3。该库包含基本的图像处理功能,包括点运算、使用一组内置卷积核进行滤波以及色彩空间转换。

资源

文档 包含安装说明以及涵盖库每个模块的示例。

用法

在 Pillow 中使用 ImageFilter 增强图像

from PIL import Image,ImageFilter  
#Read image 
im = Image.open('image.jpg') 
#Display image  
im.show()
    
from PIL import ImageEnhance  
enh = ImageEnhance.Contrast(im)  
enh.enhance(1.8).show("30% more contrast")

5. OpenCV-Python

OpenCV (Open Source Computer Vision Library) 是计算机视觉应用中最广泛使用的库之一。OpenCV-Python 是 OpenCV 的 Python API。OpenCV-Python 不仅速度快,因为后台由 C/C++ 编写的代码组成,而且还易于编码和部署(由于前台的 Python 包装器)。这使其成为执行计算密集型计算机视觉程序的绝佳选择。

资源

OpenCV2-Python-Guide 使您可以轻松开始使用 OpenCV-Python。

用法

在 OpenCV-Python 中使用使用金字塔的图像混合 创建“Orapple”

6. SimpleCV

SimpleCV 是另一个用于构建计算机视觉应用的开源框架。它提供了对多个功能强大的计算机视觉库(如 OpenCV)的访问,但无需了解位深度、文件格式、色彩空间等。它的学习曲线明显小于 OpenCV,并且(正如其标语所说)“它使计算机视觉变得容易”。SimpleCV 的一些优点是

  • 即使是初级程序员也可以编写简单的机器视觉测试
  • 摄像头、视频文件、图像和视频流都是可互操作的

资源

官方 文档 非常易于遵循,并且包含大量示例和用例供参考。

用法

7. Mahotas

Mahotas 是另一个用于 Python 的计算机视觉和图像处理库。它包含传统的图像处理功能,如滤波和形态学运算,以及更现代的计算机视觉功能,用于特征计算,包括兴趣点检测和局部描述符。该接口使用 Python,这适合快速开发,但算法是用 C++ 实现并针对速度进行了调整。Mahotas 库速度快,代码简洁,甚至依赖性也最低。阅读其 官方论文 以获得更多见解。

资源

文档 包含安装说明、示例,甚至还有一些教程,可帮助您轻松开始使用 Mahotas。

用法

Mahotas 库依靠简单的代码来完成任务。例如,它在 寻找沃利 问题上做得很好,代码量最少。

解决寻找沃利问题

8. SimpleITK

ITK (Insight Segmentation and Registration Toolkit) 是一个“开源、跨平台系统,为开发人员提供了用于图像分析的广泛软件工具套件。SimpleITK 是构建在 ITK 之上的简化层,旨在促进其在快速原型设计、教育和 [解释] 语言中的使用。”它也是一个图像分析工具包,具有 大量组件,支持通用滤波操作、图像分割和配准。SimpleITK 使用 C++ 编写,但可用于包括 Python 在内的大量编程语言。

资源

有大量 Jupyter Notebooks 说明了 SimpleITK 在教育和研究活动中的应用。这些笔记本演示了使用 SimpleITK 通过 Python 和 R 编程语言进行交互式图像分析。

用法

使用 SimpleITK 和 Python 创建的刚性 CT/MR 配准过程的可视化

9. pgmagick

pgmagick 是 GraphicsMagick 库的基于 Python 的包装器。GraphicsMagick 图像处理系统有时被称为图像处理的瑞士军刀。其强大而高效的工具和库集合 支持读取、写入和操作 88 种以上的主要格式的图像,包括 DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM 和 TIFF。

资源

pgmagick 的 GitHub 存储库 包含安装说明和要求。还有一个详细的 用户指南

用法

图像缩放

Image scaling in pgmagick

边缘提取

Edge extraction in pgmagick

10. Pycairo

PycairoCairo 图形库的一组 Python 绑定。Cairo 是一个用于绘制矢量图形的 2D 图形库。矢量图形很有趣,因为它们在调整大小或变换时不会失去清晰度。Pycairo 可以从 Python 调用 Cairo 命令。

资源

Pycairo GitHub 存储库 是一个很好的资源,其中包含有关安装和使用的详细说明。还有一个 入门指南,其中包含有关 Pycairo 的简短教程。

用法

使用 Pycairo 绘制线条、基本形状和径向渐变

结论

这些是 Python 中一些有用且免费提供的图像处理库。有些是众所周知的,有些对您来说可能是新的。尝试一下以更多地了解它们!

标签
Parul
Parul 是一位数据科学和深度学习爱好者。她对创新、教育和编程非常感兴趣,并希望通过机器学习解决现实生活中的问题,使其能够对社会产生直接影响。她还对“科技领域的女性”充满热情,并不断鼓励和指导年轻女孩加入 STEM 领域。

2 条评论

这篇文章对于所有有兴趣使用 python 在图像处理方面做一些事情的人都很有帮助,因此,我感谢您。我希望包括这些库的安装和一些实际应用领域可以将文章从好变成优秀。

我发现你的文章非常有帮助,特别喜欢 PIL/Pillow 库。干杯 :)

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 获得许可。
© 2025 open-source.net.cn. All rights reserved.