10 款 Python 图像处理工具

17 Mar 2025 | 6 分钟阅读

在本教程中,我们将讨论提供简单直观的方法来转换图像并理解其背后数据的 Python 库。

当今世界充斥着数据,而图像构成了这些数据的绝大部分。但是,为了能够以任何方式利用它们,数字图像需要经过处理和分析,以提高其质量或获取可利用的信息。

常见的图像处理任务包括显示;翻转、裁剪等简单操作。图像分割、特征提取、图像分类、图像恢复以及图像识别。Python 因其作为科学编程语言的日益普及,以及其库中提供了各种最先进的图像处理工具,因此成为这些图像处理任务的绝佳选择。

本文探讨了最常用的 10 个 Python 图像处理库。这些库提供了简单直观的方法来修改图像并理解其背后的数据。

1. scikit-image

Scikit-image 是一个开源的 Python 程序,它使用 NumPy 数组。它是一种用于实现可用于研究、教育和工业应用的算法和实用程序的工具。它是一个简单易用的库,即使对于不熟悉 Python 生态系统的用户也是如此。代码质量很高,经过同行评审,由一群志愿者编写。

资源

Scikit-image 已得到 全面解释,其中包含大量示例和实际用例。

用途

它加载为 skimage,并且大多数函数都包含在子模块中。

输出

10 Python Image Manipulation Tools

使用 match_template 函数进行模板匹配

10 Python Image Manipulation Tools

2. NumPy

NumPy 是 Python 编程中最重要的库之一。它也支持数组。图像本质上是一个标准的 NumPy 数组,包含构成数据的像素。因此,通过使用标准的 NumPy 技术,如切片、掩码或花式索引,可以修改图像中的像素值。它也可以与 skimage 程序一起加载,并使用 Matplotlib 显示。

用途

使用 NumPy 掩码图像

输出

10 Python Image Manipulation Tools

3. SciPy

SciPy SciPy 是 Python 的另一个主要科学模块(类似于 NumPy),可用于对图像执行基本操作和处理。特别是,有一个名为 scipy.ndimage 的子模块(在 SciPy v1.1.0 中),它提供了对 n 维 NumPy 数组进行操作的函数。该包目前包含用于非线性滤波、线性滤波、B 样条插值、二值形态学以及对象测量的函数。

用途

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

10 Python Image Manipulation Tools

4. PIL/Pillow

PIL(Python Imaging Library)是一个免费的 Python 库。它是一个为 Python 编程语言提供的库,支持打开、操作和保存各种图像格式。然而,它的开发已经放缓,最后一次发布是在 2009 年。但是,有一个 替代品 Pillow,它是 PIL 的一个积极开发的替代品,安装更简单,支持所有主要平台,并且还支持 Python 3。该库提供了基本的图像处理功能,包括点操作、滤镜、内置卷积核以及颜色空间转换。

用途

使用 Pillow 中的 ImageFilter 增强图像

10 Python Image Manipulation Tools

5. OpenCV-Python

OpenCV(Open Source Computer Vision Library)是最常用的计算机视觉程序之一。OpenCV-Python 是 OpenCV 的 Python API。OpenCV-Python 不仅效率高,因为其后端是用 C/C++ 编写的代码。而且,它还易于编程和实现(由于其前面的 Python 包装器)。这使其成为运行计算密集型计算机视觉应用的绝佳选择。

用途

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

10 Python Image Manipulation Tools

6. SimpleCV

SimpleCV 是另一个用于创建计算机视觉应用程序的开源框架。它提供了对各种强大的计算机视觉软件库(如 OpenCV)的访问,但您不需要了解位深、颜色空间、文件格式或颜色空间。SimpleCV 的学习曲线比 OpenCV 显著降低,(正如其标语所述)“使计算机视觉变得简单”。SimpleCV 的一些优点包括:

  • 即使是初学者程序员也可以编写基本的机器视觉测试。
  • 相机、视频文件、视频和图像都是可互操作的。

用途

10 Python Image Manipulation Tools

7. Mahotas

Mahotas 是另一个可用于 Python 的图像和计算机视觉软件。它具有传统的图像处理工具,如滤波和形态学处理,以及用于特征计算的现代计算机视觉工具,包括兴趣点检测和局部描述符。其 Python 接口适合开发速度。然而,算法是用 C++ 编写的,并针对速度进行了优化。Mahotas 库速度极快,代码量少,依赖性低。请阅读官方出版物以获得更多见解。

资源

文档 包含安装说明、示例以及一些指南,可帮助您快速开始使用 Mahotas。

用途

Mahotas 库依赖于简单的代码来完成任务。例如,它在解决“寻找沃利”问题方面做得非常出色,仅用了少量代码。

“寻找沃利”问题的解决方案

10 Python Image Manipulation Tools
10 Python Image Manipulation Tools

8. SimpleITK

ITK(Insight Segmentation and Registration Toolkit)是“一个开源的、跨平台的软件,它为开发人员提供了广泛的工具来辅助图像分析。SimpleITK 是构建在 ITK 之上的一个抽象层,旨在简化快速原型设计和教育以及 [andinterpreters。该工具包还包括图像分析,其中各种组件支持通用滤波功能,如图像分割、图像滤波和配准。SimpleITK 是用 C++ 编写的,但它与 Python 等多种编程语言兼容。

资源

有许多 Jupyter Notebooks 展示了 SimpleITK 在研究和教育中的应用。Notebooks 展示了如何使用 SimpleITK 通过 Python 和 R 编程语言进行交互式图像分析。

用途

使用 Python 和 SimpleITK 创建的严格 CT/MR 配准过程的可视化。Python

10 Python Image Manipulation Tools

9. pgmagick

pgmagick 是一个基于 Python 的包装器,与 GraphicsMagick 库兼容。它是GraphicsMagick 图像处理系统,通常被称为“图像处理领域的瑞士军刀”。它可靠且功能强大的库和工具集允许读取、写入和操作 88 种以上格式的图像,包括 DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM 和 TIFF。

资源

Pgmagick 的 GitHub 存储库 包含安装说明和规范。它还有一个全面的 用户指南

用途

图像缩放

10 Python Image Manipulation Tools

边缘提取

10 Python Image Manipulation Tools

10. Pycairo

Pycairo Pycairo HTML0 是 Cairo 图形库的 Python 绑定。Cairo 是一个 2D 图形库,允许创建矢量图形。矢量图形之所以吸引人,是因为它们在调整大小或修改时不会失去清晰度。Pycairo 可以使用 Python 调用 Cairo 命令。

资源

其 Pycairo GitHub 存储库 是一个有用的资源,它提供了关于安装和使用的详细说明。它还包含一个入门指南,概述了 Pycairo。

用途

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

10 Python Image Manipulation Tools