社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python中的十大图像处理工具

CDA数据分析师 • 6 年前 • 611 次点击  


大数据文摘出品

编译:张秋玥、小七、蒋宝尚


本文主要介绍了一些简单易懂最常用的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 inlinefrom skimage import data,filtersimage = data.coins()# ... or any other NumPy array!edges = filters.sobel(image)plt.imshow(edges, cmap='gray')


模版匹配(使用match_template函数)


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 npfrom skimage import dataimport matplotlib.pyplot as plt%matplotlib inlineimage = data.camera()type(image)numpy.ndarray #Image is a numpy arraymask = image < 87image[mask]=255plt.imshow(image, cmap='gray')


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,ndimageface = misc.face()blurred_face = ndimage.gaussian_filter(face, sigma=3)very_blurred = ndimage.gaussian_filter(face, sigma=5)#Resultsplt.imshow()


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 imageim = Image.open( 'image.jpg' )#Display imageim.show()from PIL import ImageEnhanceenh = ImageEnhance.Contrast(im)enh.enhance(1.8).show("30% more contrast")


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'的新水果的功能


6. SimpleCV


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

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

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


使用说明文档:

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


用法举例



7. Mahotas


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


使用说明文档:

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


用法举例


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


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配准过程。



9. pgmagick


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


使用说明文档:

https://github.com/hhatto/pgmagick


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


图片缩放


边缘提取


10. Pycairo


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


使用说明文档:

https://github.com/pygobject/pycairo


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



以上就是一些免费的优秀图像处理Python库。有些很知名,你可能已经知道或者用过,有些可能对你来说还是新的。那正好现在就上手操作一下,试一试吧!


相关报道:

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





CDA 课程咨询丨赵老师

联系电话:13381275813
扫描二维码



更多精彩文章

· 分析复联系列电影台词,看看每个英雄说得最多的词是什么

· 从全方位为你比较3种数据科学工具的比较:Python、R和SAS

· 干货 | 如何用Python开启你的机器学习之路

· 第九届CDA认证考试,首位 Level 3 数据科学家诞生!!

· 免费!10本必读的机器学习书籍(附下载)




Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/34407
 
611 次点击