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 相关文章推荐
videocapture库制作python视频高速传输程序
Dec 23 Python
python高手之路python处理excel文件(方法汇总)
Jan 07 Python
Python基于win32ui模块创建弹出式菜单示例
May 09 Python
python实现超市扫码仪计费
May 30 Python
python统计多维数组的行数和列数实例
Jun 23 Python
python pandas库的安装和创建
Jan 10 Python
Python generator生成器和yield表达式详解
Aug 08 Python
python如何保证输入键入数字的方法
Aug 23 Python
Python学习之路之pycharm的第一个项目搭建过程
Jun 18 Python
浅谈Python 函数式编程
Jun 20 Python
Python 爬虫批量爬取网页图片保存到本地的实现代码
Dec 24 Python
Pytorch中的学习率衰减及其用法详解
Jun 05 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 可阅读随机字符串代码
2010/05/26 PHP
Discuz批量替换帖子内容的方法(使用SQL更新数据库)
2014/06/23 PHP
PHP判断是否连接上网络的方法
2015/07/01 PHP
php测试kafka项目示例
2020/02/06 PHP
JavaScript confirm选择判断
2008/10/18 Javascript
JavaScript 通过模式匹配实现重载
2010/08/12 Javascript
兼容IE、FireFox、Chrome等浏览器的xml处理函数js代码
2011/11/30 Javascript
Extjs4实现两个GridPanel之间数据拖拽功能具体方法
2013/11/21 Javascript
JS+CSS 制作的超级简单的下拉菜单附图
2013/11/22 Javascript
JS截取url中问号后面参数的值信息
2014/04/29 Javascript
js判断浏览器是否支持html5
2014/08/17 Javascript
jquery文档操作wrap()方法实例简述
2015/01/10 Javascript
封装的dialog插件 基于bootstrap模态对话框的简单扩展
2016/08/10 Javascript
移动端js图片查看器
2016/11/17 Javascript
详解基于Node.js的微信JS-SDK后端接口实现代码
2017/07/15 Javascript
使用vue中的v-for遍历二维数组的方法
2018/03/07 Javascript
vue使用jsonp抓取qq音乐数据的方法
2018/06/21 Javascript
解决layui 复选框等内置控件不显示的问题
2018/08/14 Javascript
vue-router命名视图的使用讲解
2019/01/19 Javascript
关于layui的动态图标不显示的解决方法
2019/09/04 Javascript
小程序调用微信支付的方法
2019/09/26 Javascript
JS实现可控制的进度条
2020/03/25 Javascript
Python之父谈Python的未来形式
2016/07/01 Python
python 创建弹出式菜单的实现代码
2017/07/11 Python
python列表的增删改查实例代码
2018/01/30 Python
win10安装tesserocr配置 Python使用tesserocr识别字母数字验证码
2020/01/16 Python
澳大利亚宠物食品和药物在线:Jumbo Pets
2018/03/24 全球购物
Vrbo西班牙:预订您的度假公寓(公寓、乡村房屋…)
2020/04/27 全球购物
Java和Javasciprt的区别
2012/09/02 面试题
肖申克救赎观后感
2015/06/02 职场文书
2016年春季开学典礼新闻稿
2015/11/25 职场文书
2016关于学习党章的心得体会
2016/01/15 职场文书
2016年国庆节假期旅游工作总结
2016/04/01 职场文书
留学文书中的个人陈述,应该注意哪些问题?
2019/08/23 职场文书
python cv2图像质量压缩的算法示例
2021/06/04 Python
Java基础之详解HashSet的使用方法
2021/06/30 Java/Android