社区所有版块导航
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

10个Python图像处理工具,非常全了!

小白学视觉 • 3 年前 • 137 次点击  

点击上方小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

作者:Parul Pandey

编译:ronghuaiyang

导读

10个常用的可以进行图像处理的Python库的介绍,可能有些你还没用过,可以试试看!


介绍

我们这个世界充满了数据,而图像是这些数据的重要组成部分。然而,要想使用这些图像,需要对它们进行处理。因此,图像处理是分析和处理数字图像的必要的过程,其主要目的是提高图像质量或从中提取一些信息,然后加以利用。

图像处理中常见的任务包括图像显示、裁剪、翻转、旋转等基本操作、图像分割、分类和特征提取、图像恢复和图像识别。Python成为这种图像处理任务的合适选择。这是因为它作为一种科学编程语言越来越受欢迎,而且在其生态系统中有许多最先进的图像处理工具可以免费使用。

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

1.scikit  Image

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

资源

它已经通过大量的例子和实际的用例很好地文档化了。阅读文档:(http://scikit-image.org/docs/stable/user_guide.html)。

使用

包被导入为 skimage,大多数函数都在子模块中可以找到。skimage的一些例子包括:

  • 图像滤波

  1. import matplotlib.pyplot as plt

  2. %matplotlib inline

  3. from skimage import data,filters

  4. image = data.coins()

  5. # ... or any other NumPy array!

  6. edges = filters.sobel(image)

  7. plt.imshow(edges, cmap='gray')

  • 使用match template函数进行模板匹配

2.Numpy

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

资源

完整的资源和文档列表可以在Numpy的官方文档页面上找到。

使用

使用Numpy来对图像做掩模。

  1. import numpy as np

  2. from skimage import data

  3. import matplotlib.pyplot as plt

  4. %matplotlib inline

  5. image = data.camera()

  6. type(image)

  7. numpy.ndarray #Image is a numpy array

  8. mask = image < 87

  9. image[mask]= 255

  10. plt.imshow(image, cmap='gray')


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,使用高斯滤波器来做图像的模糊:

  1. from scipy import misc,ndimage

  2. face = misc.face()

  3. blurred_face = ndimage.gaussian_filter(face, sigma=3)

  4. very_blurred = ndimage.gaussian_filter(face, sigma=5)

  5. #Results

  6. plt.imshow()


4.PIL/Pillow

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

资源

文档:https://pillow.readthedocs.io/en/3.1.x/index.html提供了安装说明以及库中每个模块的示例。

使用

在Pillow中使用ImageFilter增强图像:

  1. from PIL importImage, ImageFilter

  2. #Read image

  3. im = Image.open( 'image.jpg' )

  4. #Display image

  5. im.show()

  6. from PIL importImageEnhance

  7. enh = ImageEnhance.Contrast(im)

  8. enh.enhance(1.8).show("30% more contrast")

5.OpenCV-python

OpenCV(开放源码计算机视觉库)是最广泛使用的计算机视觉应用程序库之一 *OpenCV- python *是OpenCV的python API。OpenCV-Python不仅速度快,因为后台由用C/ c++编写的代码组成,而且易于编码和部署(由于前台有Python包装器)。这使得它成为执行计算密集型计算机视觉程序的一个很好的选择。

资源

OpenCV2-Python-Guide:https://github.com/abidrahmank/OpenCV2-Python-Tutorials让使用OpenCV-Python变得很容易。

使用

下面的例子展示了OpenCV-Python在Image blend中使用金字塔创建一个名为'Orapple'的新水果。


6.SimpleCV

SimpleCV也是一个用于构建计算机视觉应用程序的开源框架。有了它,你可以访问几个高性能的计算机视觉库,如OpenCV,而不必首先了解位深度、文件格式、颜色空间等。学习曲线大大小于OpenCV,正如他们的口号所说:让计算机视觉变得容易”。一些拥护SimpleCV的观点是:

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

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

资源

官方的文档非常容易理解,并且有大量的例子和用例可以遵循。

使用

7.Mahotas

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

资源

官方文档包含安装说明、示例甚至一些教程,可以帮助你轻松地开始使用。

使用

Mahotas库依赖于使用简单的代码来完成任务。对于“查找Wally''的问题,Mahotas做得很好,而且只需要最少的代码。这是源代码。

8.SimpleITK

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

资源

提供了大量Jupyter Notebooks,用来说明SimpleITK用于教育和研究活动。这些Notebooks演示了使用SimpleITK使用Python和R编程语言进行交互式图像分析。

使用

下面的动画是用SimpleITK和Python创建的准确的CT/MR登记过程的可视化。阅读源代码在此处:https://github.com/insightsoftwareassocitium/simpleitk-notebooks/blob/master/ties/intro_anim.py。

9.pgmagick

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

资源

有一个专门用于PgMagick的Github Repository,其中有安装和需求说明。还有一个关于这个主题的详细user guid。

使用

使用pgmagick可以执行的图像处理活动很少:

图像缩放:

边缘提取:

10.Pycairo

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

资源

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

使用

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

总结

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

好消息! 

小白学视觉知识星球

开始面向外开放啦👇👇👇




下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲
小白学视觉公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲
小白学视觉 公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群


欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~


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