全国服务热线:

15861139266

十个python图像处理工具,苏州上位机培训,苏州机器视觉培训,苏州工业机器人培训
发布时间:2024-02-20 13:01:02 点击次数:182

介绍

如今的世界存在了大量的数据,图像数据是重要的组成部分。如果要利用这些图片,需要对图像进行处理,提高图片质量或提取图片内容信息。


图像处理的常见操作包括图像显示,基本操作如裁剪,翻转,旋转等,图像分割,分类和特征提取,图像恢复和图像识别。Python是图像处理的合适选择,因为它作为一种科学编程语言日益普及,并且提供了许多免费实用的图像处理工具。


下面将介绍10个用于图像处理的python库,它们在处理图像等方面都提供了简单方便的方法。


1. scikit Image

scikit-image(https://scikit-image.org/)是一个与numpy一起使用的开源Python工具。它实现了用于研究,教育和行业应用的算法和实用程序。即使是刚接触Python的人也可以轻松使用。它的代码由活跃的志愿者编写,由高质量的同行进行评审。


资源

有完善的文档和丰富的示例(http://scikit-image.org/docs/stable/user_guide.html)。


示例

导入skimage,大多数函数都在它的子模块中。下面是一些 skimage 的例子:


图像过滤


import matplotlib.pyplot as plt 

%matplotlib inline


from skimage import data,filters


image = data.coins()

# ... 或者其他的 Numpy 数组

edges = filters.sobel(image)

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

1.png


使用match_template函数进行模板匹配

2.png

在gallery中有更多例子。


2. Numpy

Numpy是Python的核心库之一,它为数组提供了支持。一个图像本质上是包含像素数据的标准Numpy数组。因此,通过使用基本的Numpy操作,例如切片,掩膜(mask)和花式索引(fancy indexi)等直接修改图像的像素值。可以使用skimage加载图像并用matplotlib显示。


资源

Numpy的官方文档提供了完整的文档和资源列表(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 #图像是一个numpy数组


mask = image < 87

image[mask]=255

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

3.jpg

3. Scipy

scipy是一个类似Numpy的核心科学计算模块,可用于基本的图像处理任务。特别是子模块scipy.ndimage提供了操作n维Numpy数组的函数。该软件包目前包括线性、非线性滤波,二值形态(binary morphology),B样条插值(B-spline interpolatio)和对象测量(object measurements)等功能。


资源

scipy.ndimage的完整函数列表: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>)

4.png

4. PIL / Pillow

PIL(Python Imaging Library)是一个免费的Python函数库,它增加了打开、操作和保存多种不同图像格式的支持。然而,它已经停止了开发,最后一次发布是2009年。幸运的是,PIL有一个活跃的分支Pillow,它更易于安装,支持所有主要的操作系统并支持Python 3。该库包含了基本的图像处理功能,包括像素操作,使用内置卷积内核进行过滤以及颜色空间转换。


资源

该文档包含了安装指引以及每个模块的示例。


示例

使用Pillow中的ImageFilter增强图像:


from PIL import Image, ImageFilter

#读入图像

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

#显示图像

im.show()


from PIL import ImageEnhance

enh = ImageEnhance.Contrast(im)

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

5.jpg

5. OpenCV-Python

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


资源

OpenCV2-Python-Guide使你更容易上手OpenCV-Python。


示例

下面的示例是使用OpenCV-Python的金字塔融合创建名为'Orapple'的新水果的功能。

6.jpg

6. SimpleCV

SimpleCV也是一个构建视觉应用的开源框架。有了它,您可以使用如OpenCV等几个高性能的计算机视觉库,不需要了解位深度,文件格式,色彩空间等概念。学习难度远远小于OpenCV,并且正如他们的标语所说,“它使计算机视觉变得简单”。SimpleCV的其他优点还有:


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


摄像机,视频文件,图像和视频流可以相互操作


资源

官方文档简单易懂,还有大量的案例参考。


示例

7.jpg

7. Mahotas

Mahotas是另一个Python计算机视觉和图像处理库。它包含了传统的图像处理功能,如过滤和形态学操作,以及用于特征计算的计算机视觉功能,包括兴趣点检测和局部描述符。该接口使用Python,可以快速开发,算法使用C++实现,并且针对速度进行了优化。Mahotas库具有尽量少的代码甚至最小的依赖。阅读他们的{官方文章](https://openresearchsoftware.metajnl.com/articles/10.5334/jors.ac/)获取更多信息。


资源

该文档包含了安装说明,示例和教程,帮助你轻松地使用mahotas。


示例

Mahotas尽量使用简单的代码实现功能。例如“Finding Wally”问题,Mahotas使用最少的代码实现了较好的结果。这里是它的源代码。

8.jpg

9.jpg

8. SimpleITK

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


资源

有许多Jupyter Notebooks展示了SimpleITK在教育和研究中的使用。使用SimpleITK进行Python和R编程语言的交互式图像分析。


示例

下面是使用SimpleITK和Python实现的CT/MR配准过程的可视化。源代码。

10.gif

9. pgmagick

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


资源

Github仓库,有安装和要求说明,详细的用户指南。


示例

一些使用 pgmagick 的图像操作:


图像缩放:

11.jpg

边缘提取:

12.jpg

10. Pycairo

Pycairo是cairo图形库的一组python绑定。Cairo是一个绘制矢量图形的2D图形库。矢量图形在调整大小或变换时不会丢失清晰度。Pycairo可使用Python调用cairo命令。


资源

Pycairo GitHub仓库有安装和使用的详细说明。以及Pycairo的简要教程。


示例

使用Pycairo绘制线段,基本形状和径向渐变(radial gradients)。

13.png


立即咨询
  • 品质服务

    服务贴心周到

  • 快速响应

    全天24小时随时沟通

  • 专业服务

    授权率高,保密性强

  • 完善售后服务

    快速响应需求,及时性服务

直播课程
软件开发基础课程
上位机软件开发课
机器视觉软件开发课
专题课
联系方式
电话:15861139266
邮箱:75607082@qq.com
地址:苏州吴中区木渎镇尧峰路69号
关注我们

版权所有:江苏和讯自动化设备有限公司所有 备案号:苏ICP备2022010314号-1

技术支持: 易动力网络