常用的十大 python 图像处理工具

简介: 图像处理中的常见任务包括显示图像,基本操作如裁剪、翻转、旋转等,图像分割,分类和特征提取,图像恢复和图像识别。
+关注继续查看
TB11DkWeoKF3KVjSZFEXXXExFXa.jpg

本文为 AI 研习社编译的技术博客,原标题 :

10 Python image manipulation tools.

作者 | Parul Pandey

翻译 | 安其罗•乔尔、JimmyHua       

编辑 | 王立鱼

原文链接:

https://towardsdatascience.com/image-manipulation-tools-for-python-6eb0908ed61f

TB1AYFSeLWG3KVjSZFgXXbTspXa.jpg

图片来自 Pexels 的Luriko Yamaguchi

今天,在我们的世界里充满了数据,图像成为构成这些数据的重要组成部分。但无论是用于何种用途,这些图像都需要进行处理。图像处理就是分析和处理数字图像的过程,主要旨在提高其质量或从中提取一些信息,然后可以将其用于某种用途。

图像处理中的常见任务包括显示图像,基本操作如裁剪、翻转、旋转等,图像分割,分类和特征提取,图像恢复和图像识别。Python成为这种图像处理任务是一个恰当选择,这是因为它作为一种科学编程语言正在日益普及,并且在其生态系统中免费提供许多最先进的图像处理工具供大家使用。

让我们看一下可以用于图像处理任务中的常用 Python 库有哪些吧。

  1.scikit-image

scikit-image是一个开源的Python包,适用于numpy数组。它实现了用于研究,教育和工业应用的算法和实用工具。即使是那些刚接触Python生态系统的人,它也是一个相当简单直接的库。此代码是由活跃的志愿者社区编写的,具有高质量和同行评审的性质。

资源

文档里记录了丰富的例子和实际用例,阅读下面的文档:

http://scikit-image.org/docs/stable/user_guide.html

用法

该包作为skimage导入,大多数功能都在子模块中找的到。下面列举一些skimage的例子:

图像过滤

TB1bl0ReL1H3KVjSZFBXXbSMXXa.pngTB1.ShTeR1D3KVjSZFyXXbuFpXa.jpg

使用match_template函数进行模板匹配

TB1JnJUeUuF3KVjSZK9XXbVtXXa.jpg

你可以通过此处查看图库找到更多示例。

  2. Numpy

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

资源

Numpy的官方文档页面提供了完整的资源和文档列表:

http://www.numpy.org/

用法

使用Numpy来掩膜图像.

TB13M8VeQWE3KVjSZSyXXXocXXa.pngTB1y5lSeUWF3KVjSZPhXXXclXXa.jpg

  3.Scipy

scipy是Python的另一个类似Numpy的核心科学模块,可用于基本的图像操作和处理任务。特别是子模块scipy.ndimage,提供了在n维NumPy数组上操作的函数。该包目前包括线性和非线性滤波,二值形态学,B样条插值和对象测量等功能函数。

资源

有关scipy.ndimage包提供的完整功能列表,请参阅下面的链接:

https://docs.scipy.org/doc/scipy/reference/tutorial/ndimage.html#correlation-and-convolution

用法

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

TB1GDFTeROD3KVjSZFFXXcn9pXa.pngTB1nyXSeUCF3KVjSZJnXXbnHFXa.jpg

  4. PIL/ Pillow

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

资源

文档中有安装说明,以及涵盖库的每个模块的示例:

https://pillow.readthedocs.io/en/3.1.x/index.html

用法

在 Pillow 中使用 ImageFilter 增强图像:

TB1SPtTeSSD3KVjSZFKXXb10VXa.pngTB13aX3eG5s3KVjSZFNXXcD3FXa.jpg

  5. OpenCV-Python

OpenCV( 开源计算机视觉库 )是计算机视觉应用中应用最广泛的库之一 。OpenCV-Python 是OpenCV的python版API。OpenCV-Python的优点不只有高效,这源于它的内部组成是用C/C++编写的,而且它还容易编写和部署(因为前端是用Python包装的)。这使得它成为执行计算密集型计算机视觉程序的一个很好的选择。 

资源

OpenCV-Python-Guide指南可以让你使用OpenCV-Python更容易:

https://github.com/abidrahmank/OpenCV2-Python-Tutorials

用法

下面是一个例子,展示了OpenCV-Python使用金字塔方法创建一个名为“Orapple”的新水果图像融合的功能。  

TB1Dl4ReL1H3KVjSZFBXXbSMXXa.jpg

  6. SimpleCV

SimpleCV 也是一个用于构建计算机视觉应用程序的开源框架。有了它,你就可以访问几个高性能的计算机视觉库,如OpenCV,而且不需要先学习了解位深度、文件格式、颜色空间等。

它的学习曲线大大小于OpenCV,正如它们的口号所说“计算机视觉变得简单”。一些支持SimpleCV的观点有:

即使是初学者也可以编写简单的机器视觉测试  

摄像机、视频文件、图像和视频流都是可互操作的  

资源

官方文档非常容易理解,而且有大量的例子和使用案例去学习:

https://simplecv.readthedocs.io/en/latest/

用法

TB1bIXTeRWD3KVjSZFsXXcqkpXa.jpg

  7. Mahotas

Mahotas 是另一个计算机视觉和图像处理的Python库。它包括了传统的图像处理功能例如滤波和形态学操作以及更现代的计算机视觉功能用于特征计算,包括兴趣点检测和局部描述符。该接口是Python语言,适合于快速开发,但是算法是用C语言实现的,并根据速度进行了调优。Mahotas库速度快,代码简洁,甚至具有最小的依赖性。通过原文阅读它们的官方论文以获得更多的了解。  

资源

文档包括安装指导,例子,以及一些教程,可以更好的帮助你开始使用mahotas。

https://mahotas.readthedocs.io/en/latest/install.html

用法

Mahotas库依赖于使用简单的代码来完成任务。关于‘Finding Wally’的问题,Mahotas做的很好并且代码量很少。下面是源码:

https://mahotas.readthedocs.io/en/latest/wally.html

TB1uDJTeROD3KVjSZFFXXcn9pXa.jpgTB1rTRUeUuF3KVjSZK9XXbVtXXa.jpg

  8. SimpleITK

ITK 或者 Insight Segmentation and Registration Toolkit是一个开源的跨平台系统,为开发人员提供了一套广泛的图像分析软件工具 。其中, SimpleITK是建立在ITK之上的简化层,旨在促进其在快速原型设计、教育、解释语言中的应用。SimpleITK 是一个图像分析工具包,包含大量支持一般过滤操作、图像分割和匹配的组件。SimpleITK本身是用C++写的,但是对于包括Python以内的大部分编程语言都是可用的。

资源

大量的Jupyter Notebooks 表明了SimpleITK在教育和研究领域已经被使用。Notebook展示了用Python和R编程语言使用SimpleITK来进行交互式图像分析。 

http://insightsoftwareconsortium.github.io/SimpleITK-Notebooks/

用法

下面的动画是用SimpleITK和Python创建的刚性CT/MR匹配过程的可视化 。点击此处可查看源码!

TB1hulSeMmH3KVjSZKzXXb2OXXa.jpg

  9. pgmagick

pgmagick是GraphicsMagick库的一个基于python的包装。  GraphicsMagick图像处理系统有时被称为图像处理的瑞士军刀。它提供了一个具有强大且高效的工具和库集合,支持以88种主要格式(包括重要格式,如DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM和TIFF)读取、写入和操作图像。 

资源

有一个专门用于PgMagick的Github库 ,其中包含安装和需求说明。还有关于这个的一个详细的用户指导:

https://github.com/hhatto/pgmagick

用法

使用pgmagick可以进行的图像处理活动很少,比如:

图像缩放

TB1bIdTeRWD3KVjSZFsXXcqkpXa.jpg

边缘提取

TB1RCtTeR1D3KVjSZFyXXbuFpXa.jpg

  10. Pycairo

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

资源

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

库:https://github.com/pygobject/pycairo

指南:https://pycairo.readthedocs.io/en/latest/tutorial.html

用法

使用Pycairo绘制线条、基本形状和径向梯度:

TB1XhRSeUKF3KVjSZFEXXXExFXa.png

  总结

有一些有用且免费的Python图像处理库可以使用,有的是众所周知的,有的可能对你来说是新的,试着多去了解它们。

注:本文的内容改编自作者之前在 opensource.com 上发表的文章。雷锋网雷锋网雷锋网(公众号:雷锋网)

想要继续查看该篇文章相关链接和参考文献?

点击【常用的十大 python 图像处理工具】即可访问:

https://ai.yanxishe.com/page/TextTranslation/1755

今日资源推荐:

TB1NWh3eG5s3KVjSZFNXXcD3FXa.png

49个Python学习资源收集!作者把它分解为4种形式:1、那些刚刚开始编程和Python的初学者资源;2、适用于那些希望将Python知识基础应用于数据科学和Web开发等领域的人员的进阶资源;3、为那些希望通过Python深入学习和大数据等概念的人提供高级资源;4、最后是最重要的练习计划,帮助你快速实践和巩固 Python 技能。

详情点击:https://ai.yanxishe.com/page/tweet/26516

目录
相关文章
|
2月前
|
数据采集 XML 数据格式
15行Python代码 实现图像定位
15行Python代码 实现图像定位
|
2月前
|
移动开发 人工智能 JSON
Python绘制的图形或者图像在vue的前端页面中显示
Python绘制的图形或者图像在vue的前端页面中显示的方法总结
88 0
|
3月前
|
编解码 数据可视化 数据格式
Python GDAL读取多波段HDF图像绘制直方图
本文介绍基于Python语言gdal模块,实现多波段HDF栅格图像文件的读取、处理与像元值可视化(直方图绘制)等操作~
Python GDAL读取多波段HDF图像绘制直方图
|
3月前
|
开发者 Python
Python 操作 Excel 全攻略 | 包括读取、写入、表格操作、图像输出和字体设置
Python 操作 Excel 全攻略 | 包括读取、写入、表格操作、图像输出和字体设置
61 0
|
3月前
|
存储 数据采集 监控
如何防止Python大规模图像抓取过程中出现内存不足错误
图像抓取是一种常见的网络爬虫技术,用于从网页上下载图片并保存到本地文件夹中。然而,当需要抓取的图片数量很大时,可能会出现内存不足的错误,导致程序崩溃。本文介绍了如何使用Python进行大规模的图像抓取,并提供了一些优化内存使用的方法和技巧,以及如何计算和评估图片的质量指标。
如何防止Python大规模图像抓取过程中出现内存不足错误
|
3月前
|
算法 计算机视觉 Python
转:Python的分水岭算法如何分割图像?
分水岭算法是一种图像分割算法。它将图像分割为两个或多个连通区域。算法使用图像的梯度信息来确定图像中的“分水岭”。分水岭是指图像中的边界或轮廓。算法通过找到图像中的分水岭来将图像分割成不同的区域。
51 0
|
4月前
|
文字识别 小程序 Python
图像文字识别与保存-python
图像文字识别与保存-python
45 0
|
4月前
|
Python
【Python】保存不同尺寸(等比缩放)图像的脚本
【Python】保存不同尺寸(等比缩放)图像的脚本
|
4月前
|
存储 C++ 计算机视觉
OpenCV入门(C++/Python)-使用OpenCV裁剪图像(四)
OpenCV入门(C++/Python)-使用OpenCV裁剪图像(四)
122 0
|
4月前
|
计算机视觉 C++ Python
OpenCV入门(C++/Python)- 使用OpenCV读取、显示和写入图像(一)
OpenCV入门(C++/Python)- 使用OpenCV读取、显示和写入图像(一)
117 0
相关产品
云迁移中心
推荐文章
更多