Python中的十大图像处理工具(小结)


Posted in Python onJune 10, 2019

Python之成为图像处理任务的最佳选择,是因为这一科学编程语言日益普及,并且其自身免费提供许多最先进的图像处理工具。本文主要介绍了一些简单易懂最常用的Python图像处理库。

当今世界充满了各种数据,而图像是其中高的重要组成部分。然而,若想其有所应用,我们需要对这些图像进行处理。图像处理是分析和操纵数字图像的过程,旨在提高其质量或从中提取一些信息,然后将其用于某些方面。

图像处理中的常见任务包括显示图像,基本操作(如裁剪、翻转、旋转等),图像分割,分类和特征提取,图像恢复和图像识别等。 Python之成为图像处理任务的最佳选择,是因为这一科学编程语言日益普及,并且其自身免费提供许多最先进的图像处理工具。

让我们看一下用于图像处理任务的一些常用Python库。

1. scikit Image

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

使用说明文档:https://scikit-image.org/docs/stable/user_guide.html

用法举例:图像过滤、模版匹配

可使用“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')

Python中的十大图像处理工具(小结)

模版匹配(使用match_template函数)

Python中的十大图像处理工具(小结)

gallery上还有更多例子。

https://scikit-image.org/docs/dev/auto_examples/

2. Numpy

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

使用说明文档:http://www.numpy.org/

用法举例:使用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')

Python中的十大图像处理工具(小结)

3. Scipy

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

使用说明文档:

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

用法举例:使用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>)

Python中的十大图像处理工具(小结)

4. PIL/ Pillow

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

使用说明文档:https://pillow.readthedocs.io/en/3.1.x/index.html

用法举例:使用ImageFilter增强Pillow中的图像

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")

Python中的十大图像处理工具(小结)

5. OpenCV-Python

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

使用说明文档:https://github.com/abidrahmank/OpenCV2-Python-Tutorials

用法举例:使用Pyramids创建一个名为'Orapple'的新水果的功能

Python中的十大图像处理工具(小结)

6. SimpleCV

SimpleCV也是用于构建计算机视觉应用程序的开源框架。 通过它可以访问如OpenCV等高性能的计算机视觉库,而无需首先了解位深度、文件格式或色彩空间等。学习难度远远小于OpenCV,并且正如他们的标语所说,“ 它使计算机视觉变得简单 ”。支持SimpleCV的一些观点是:

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

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

使用说明文档:https://simplecv.readthedocs.io/en/latest/

用法举例

Python中的十大图像处理工具(小结)

7. Mahotas

Mahotas是另一个用于Python的计算机视觉和图像处理库。 它包含传统的图像处理功能(如滤波和形态学操作)以及用于特征计算的更现代的计算机视觉功能(包括兴趣点检测和局部描述符)。 该接口使用Python,适用于快速开发,但算法是用C ++实现的,并且针对速度进行了优化。Mahotas库运行很快,它的代码很简单,(对其它库的)依赖性也很小。 建议阅读他们的官方文档以了解更多内容。

使用说明文档:

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

用法举例

Mahotas库使用简单的代码来完成工作。 对于“ 寻找Wally ”的问题,Mahotas完成的得很好,而且代码量非常小。

Python中的十大图像处理工具(小结)

Python中的十大图像处理工具(小结)

8. SimpleITK

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

使用说明文档:https://github.com/hhatto/pgmagick

这里有大量说明了如何使用SimpleITK进行教育和研究活动的Jupyter notebook。notebook中演示了如何使用SimpleITK进行使用Python和R编程语言的交互式图像分析。

用法举例:

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

Python中的十大图像处理工具(小结)

9. pgmagick

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

使用说明文档:https://github.com/hhatto/pgmagick

用法举例:图片缩放、边缘提取

Python中的十大图像处理工具(小结)

图片缩放

Python中的十大图像处理工具(小结)

边缘提取

10. Pycairo

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

使用说明文档:https://github.com/pygobject/pycairo

用法:Pycairo可以绘制线条、基本形状和径向渐变

Python中的十大图像处理工具(小结)

以上就是一些免费的优秀图像处理Python库。有些很知名,你可能已经知道或者用过,有些可能对你来说还是新的。那正好现在就上手操作一下,试一试吧。希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python异常处理总结
Aug 15 Python
极简的Python入门指引
Apr 01 Python
Python字符串匹配算法KMP实例
Jul 18 Python
python中利用Future对象异步返回结果示例代码
Sep 07 Python
Python从零开始创建区块链
Mar 06 Python
python判断设备是否联网的方法
Jun 29 Python
python实现C4.5决策树算法
Aug 29 Python
使用Python控制摄像头拍照并发邮件
Apr 23 Python
Python配置虚拟环境图文步骤
May 20 Python
numpy下的flatten()函数用法详解
May 27 Python
pandas计算最大连续间隔的方法
Jul 04 Python
Python docutils文档编译过程方法解析
Jun 23 Python
在python下使用tensorflow判断是否存在文件夹的实例
Jun 10 #Python
Python函数参数匹配模型通用规则keyword-only参数详解
Jun 10 #Python
python 判断文件还是文件夹的简单实例
Jun 10 #Python
python实现植物大战僵尸游戏实例代码
Jun 10 #Python
python中的协程深入理解
Jun 10 #Python
Python中asyncio模块的深入讲解
Jun 10 #Python
Python中的asyncio代码详解
Jun 10 #Python
You might like
PHP使用mysqldump命令导出数据库
2015/04/14 PHP
向fckeditor编辑器插入指定代码的方法
2007/05/25 Javascript
JavaScript中的其他对象
2008/01/16 Javascript
Jquery带搜索框的下拉菜单
2013/05/06 Javascript
Jquery封装tab自动切换效果的具体实现
2013/07/13 Javascript
用JavaScript计算在UTF-8下存储字符串占用字节数
2013/08/08 Javascript
jquery实现图片灯箱明暗的遮罩效果
2013/11/15 Javascript
如何正确使用javascript 来进行我们的程序开发
2014/06/23 Javascript
滚动条响应鼠标滑轮事件实现上下滚动的js代码
2014/06/30 Javascript
jQuery事件绑定on()与弹窗实现代码
2016/04/28 Javascript
Google 地图控件集详解及实例代码
2016/08/06 Javascript
微信小程序 wxapp视图容器 view详解
2016/10/31 Javascript
jQuery post数据至ashx实例详解
2016/11/18 Javascript
jQuery的extend方法【三种】
2016/12/14 Javascript
jQuery插件FusionCharts实现的3D帕累托图效果示例【附demo源码】
2017/03/25 jQuery
Javascript中 toFixed四舍六入方法
2017/08/21 Javascript
JS实现字符串中去除指定子字符串方法分析
2018/05/17 Javascript
nodejs 十六进制字符串型数据与btye型数据相互转换
2018/07/30 NodeJs
Angular刷新当前页面的实现方法
2018/11/21 Javascript
基于element-ui封装可搜索的懒加载tree组件的实现
2020/05/22 Javascript
举例讲解Python常用模块
2019/03/08 Python
python定时按日期备份MySQL数据并压缩
2019/04/19 Python
使用OpenCV实现仿射变换—平移功能
2019/08/29 Python
pandas read_excel()和to_excel()函数解析
2019/09/19 Python
Python dict的常用方法示例代码
2020/06/23 Python
Python如何把字典写入到CSV文件的方法示例
2020/08/23 Python
美国珠宝精品店:Opulent Jewelers
2019/08/20 全球购物
南京某公司笔试题
2013/01/27 面试题
前处理组长岗位职责
2014/03/01 职场文书
计算机专业应届生求职信
2014/04/06 职场文书
小学少先队辅导员述职报告
2015/01/10 职场文书
歌剧魅影观后感
2015/06/05 职场文书
Python生成九宫格图片的示例代码
2021/04/14 Python
如何使用php生成zip压缩包
2021/04/21 PHP
HAM-2000摩机图
2021/04/22 无线电
Java中Dijkstra(迪杰斯特拉)算法
2022/05/20 Java/Android