一些常用的 Python 库概览,提供了一种简单直观的方式来对图像进行转换。
引言
当今世界充满了数据,而图像是这些数据的重要组成部分。然而,要对其进行任何处理,这些图像需要被处理。图像处理主要是分析和操作数字图像,旨在提高其质量或从中提取一些信息,然后可以利用这些信息。
图像处理中的典型任务包括显示图像、基本操作如裁剪、翻转、旋转等,图像分割、分类和特征提取,图像恢复和图像识别。对于这些图像处理任务,Python 成为了一个合适的选择。这是由于它作为科学编程语言的不断增长的流行性,以及其生态系统中许多先进技术的图像处理工具的免费可用性。
让我们看一些常用于图像处理任务的 Python 库。
1. scikit-image
scikit-image 是一个开源的 Python 包,与 numpy` 数组一起工作。它实现了在研究、教育和工业应用中使用的算法和实用工具。即使对于那些对 Python 生态系统尚不熟悉的人来说,这是一个相对简单的库。这些代码质量很高且经过同行评审,是由活跃的志愿者社区编写的。
资源
它有很好的文档,附带许多示例和实际用例。阅读文档 here。
使用
该包被导入为 skimage
,大多数功能都在子模块中。一些 scikit-image 的示例包括:
- 图像过滤
import matplotlib.pyplot as plt
%matplotlib inlinefrom skimage import data,filtersimage = data.coins()
... 或其他任何 NumPy 数组!
edges = filters.sobel(image)
plt.imshow(edges, cmap='gray')
- 使用 match_template 函数进行模板匹配
- 您可以在 gallery 中找到更多示例。
Numpy
Numpy 是 Python 编程中的核心库之一,提供对数组的支持。图像本质上是一个包含像素数据点的标准 Numpy 数组。因此,通过使用基本的 NumPy 操作,如切片、掩码和高级索引,我们可以修改图像的像素值。图像可以使用 skimage 加载,并使用 matplotlib 显示。
资源
有关资源和文档的完整列表可以在 Numpy 的 official documentation page 上找到。
使用
使用 Numpy 对图像进行掩码处理。
import numpy as np
from skimage import data
import matplotlib.pyplot as plt
%matplotlib inlineimage = data.camera()
type(image)**numpy.ndarray #Image is a numpy array**mask = image < 87
image[mask]=255
plt.imshow(image, cmap='gray')
Scipy
scipy 是另一个类似于 Numpy 的 Python 核心科学模块,可用于基本的图像处理和处理任务。特别是子模块 scipy.ndimage` 提供了在 n 维度 NumPy 数组上操作的函数。该包目前包括线性和非线性滤波函数、二进制形态学、B 样条插值和对象测量等。
资源
有关 scipy.ndimage
包提供的函数的完整列表,请参阅文档 here。
使用
使用 SciPy 进行模糊处理,使用 Gaussian filter:
from scipy import misc,ndimageface = 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>)
PIL/ Pillow
PIL(Python Imaging Library)是 Python 编程语言的免费库,可支持打开、操作和保存许多不同的图像文件格式。然而,其发展已经停滞不前,在2009年发布了最后一个版本。幸运的是,有一个名为 Pillow 的活跃开发的 PIL 分支,更易于安装,可以运行在所有主要操作系统上,并支持 Python 3。该库包含基本的图像处理功能,包括点操作、使用一组内置卷积核进行滤波以及颜色空间转换等。
资源
该 documentation 包含安装说明和涵盖库的每个模块的示例。
使用
使用 Pillow 对图像进行增强,使用 ImageFilter:
**from** PIL **import** Image**,** ImageFilter
_#读取图像_
im = Image.open**(** 'image.jpg' **)**
_#显示图像_
im.show**()**from PIL import ImageEnhance
enh = ImageEnhance.Contrast(im)
enh.enhance(1.8).show("30% more contrast")
OpenCV-Python
OpenCV(Open Source Computer Vision Library)是最广泛使用的用于计算机视觉应
用的库之一。OpenCV-Python 是 OpenCV 的 Python API。OpenCV-Python 不仅因为背景由 C/C++ 编写的代码而快速,而且由于前台中的 Python 封装器,易于编码和部署。这使得它成为执行计算密集型计算机视觉程序的良好选择。
资源
OpenCV2-Python-Guide 可以让您轻松开始使用 OpenCV-Python。