当今世界充满了数据,图像构成了这些数据的重要部分。 但是,在使用这些数字图像之前,必须对其进行处理(分析和处理),以提高其质量或提取一些可以使用的信息。
常见的图像处理任务包括显示; 基本操作,例如裁剪,翻转,旋转等; 图像分割,分类和特征提取; 图像恢复; 和图像识别。 Python作为一种科学编程语言越来越受欢迎,并且在其生态系统中免费提供了许多最新的图像处理工具,因此Python是这些类型的图像处理任务的绝佳选择。
本文介绍了10种最常用的Python库用于图像处理任务。 这些库提供了一种简单直观的方法来转换图像并理解基础数据。
1. scikit图片
scikit -image是一个与NumPy数组一起使用的开源Python软件包。 它实现了用于研究,教育和行业应用的算法和实用程序。 即使对于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'
)
使用match_template函数进行模板匹配:
您可以在图库中找到更多示例。
2. NumPy
NumPy是Python编程的核心库之一,并提供对数组的支持。 图像本质上是包含数据点像素的标准NumPy数组。 因此,通过使用基本的NumPy操作(例如切片,遮罩和花式索引),可以修改图像的像素值。 可以使用skimage加载图像,并使用Matplotlib显示图像。
资源资源
官方文档页面 。用法
使用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'
)
3.科学
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
>
)
4. PIL /枕头
PIL (Python影像库)是Python编程语言的免费库,它增加了对打开,操作和保存许多不同图像文件格式的支持。 但是,其发展停滞不前,其最新版本是2009年。幸运的是,有一个Pillow (积极开发的PIL分支),易于安装,可以在所有主要操作系统上运行,并且支持Python3。该库包含基本映像。处理功能,包括点运算,使用一组内置的卷积内核进行过滤以及颜色空间转换。
资源资源
该文档包含安装说明以及涵盖该库每个模块的示例。
用法
使用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 (开源计算机视觉库)是计算机视觉应用程序中使用最广泛的库之一。 OpenCV-Python是OpenCV的Python API。 OpenCV-Python不仅速度快,因为其背景由用C / C ++编写的代码组成,而且还易于编码和部署(由于前景中的Python包装器)。 这使其成为执行计算密集型计算机视觉程序的绝佳选择。
资源资源
《 OpenCV2-Python指南》使您可以轻松开始使用OpenCV-Python。
用法
在OpenCV-Python中使用金字塔使用图像混合来创建“ Orapple”:
6. SimpleCV
SimpleCV是用于构建计算机视觉应用程序的另一个开源框架。 它提供了访问一些高性能计算机视觉库(例如OpenCV)的权限,而无需了解位深度,文件格式,色彩空间等。它的学习曲线明显小于OpenCV的学习曲线,并且(如其标语所示),“这使计算机视觉变得容易。” 支持SimpleCV的一些观点是:
- 即使是初学者,也可以编写简单的机器视觉测试
- 摄像机,视频文件,图像和视频流均可互操作
资源资源
官方文档非常容易遵循,并且包含大量示例和用例。
用法
7. Mahotas
Mahotas是另一个适用于Python的计算机视觉和图像处理库。 它包含传统的图像处理功能(例如过滤和形态运算),以及用于特征计算(包括兴趣点检测和局部描述符)的更现代的计算机视觉功能。 该接口使用Python进行开发,适合于快速开发,但是算法是用C ++实现并进行了速度调整。 Mahotas的库以最少的代码甚至最小的依赖关系快速运行。 阅读其官方论文以获得更多见解。
资源资源
该文档包含安装说明,示例,甚至包括一些教程,可帮助您轻松开始使用Mahotas。
用法
Mahotas库依靠简单的代码来完成工作。 例如,它用最少的代码就能很好地解决Finding Wally问题。
解决“发现沃利”问题:
8. SimpleITK
ITK (Insight细分和注册工具包)是一个“开源,跨平台系统,为开发人员提供了用于图像分析的大量软件工具。SimpleITK是构建在ITK之上的简化层,旨在促进其快速使用。原型,教育和[和]解释语言。” 它也是一个图像分析工具包,其中包含大量支持常规过滤操作,图像分割和配准的组件。 SimpleITK用C ++编写,但可用于许多编程语言,包括Python。
资源资源
有大量的Jupyter笔记本说明了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存储库具有安装说明和要求。 也有详细的用户指南 。
用法
图像缩放:
边缘提取:
10.皮开罗
Pycairo是用于Cairo图形库的一组Python绑定。 开罗是用于绘制矢量图形的2D图形库。 矢量图形很有趣,因为它们在调整大小或变换后不会失去清晰度。 Pycairo可以从Python调用Cairo命令。
资源资源
Pycairo GitHub存储库是一个很好的资源,其中包含有关安装和使用的详细说明。 还有一个入门指南 ,其中包含有关Pycairo的简短教程。
用法
使用Pycairo绘制线条,基本形状和径向渐变:
结论
这些是Python中一些有用且免费的图像处理库。 有些是众所周知的,而另一些可能对您来说是新的。 试试看他们,以了解更多关于他们!
翻译自: https://opensource.com/article/19/3/python-image-manipulation-tools