原文地址:https://cloud.tencent.com/developer/article/1498116

译者 | 小韩

来源 | towardsdatascience

【磐创AI导读】:本篇文章为大家介绍了十个python图像处理工具,希望对大家有所帮助。想要获取更多的机器学习、深度学习资源,欢迎大家点击上方蓝字关注我们的公众号:磐创AI。

介绍

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

图像处理的常见操作包括图像显示,基本操作如裁剪,翻转,旋转等,图像分割,分类和特征提取,图像恢复和图像识别。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')
  • 使用match_template函数进行模板匹配

在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. 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. 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. 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. SimpleCV

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

  • 初学者也可以编写简单的机器视觉测试
  • 摄像机,视频文件,图像和视频流可以相互操作

资源

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

示例

7. Mahotas

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

资源

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

示例

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

8. SimpleITK

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

资源

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

示例

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

9. pgmagick

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

资源

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

示例

一些使用 pgmagick 的图像操作:

图像缩放:

边缘提取:

10. Pycairo

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

资源

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

示例

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

总结

以上是Python中一些好用且免费的图像处理库。他们都值得尝试使用并了解更多它们的信息。

Python10个图像处理工具的更多相关文章

  1. 图像处理工具V1.0

    图像处理工具V1.0(仿彗星图片处理工具.VS2015安装界面)----个人无聊作品 以下是界面: 部分代码一.(摘自网络----加水印代码): public static void ImageWat ...

  2. Python中的十大图像处理工具

    转自:微信博客 机器学习研究会订阅号 微信号 功能介绍机器学习研究会由百度七剑客雷鸣先生创办,旨在推动AI的技术发展和产业落地.参与组织北大.清华”AI前沿与产业趋势“公开课,广泛的和高校.企业.创业 ...

  3. 十个python图像处理工具

    介绍 如今的世界存在了大量的数据,图像数据是重要的组成部分.如果要利用这些图片,需要对图像进行处理,提高图片质量或提取图片内容信息. 图像处理的常见操作包括图像显示,基本操作如裁剪,翻转,旋转等,图像 ...

  4. Emgucv图像处理工具

    此工具是当年自己在学习Emgucv的时候,慢慢积累的,包含了常用的图像处理算法,非常适合新人学习,现放出源码,由于是以前做的,功能不全. 当时Emgucv的学习资料非常之少,没有一本书是讲Emgucv ...

  5. App开发流程之图像处理工具类

    先罗列一下工具类中提供的方法: /** * 根据原始view和毛玻璃样式,获取模糊视图,并自动作为原view的subview(如果不需要作为子视图,自行调用removeFromSuperview) * ...

  6. .NET图平台下的图像处理工具---强大的Emgucv

    图像一直与时代相伴,图形化的应用软件也重不可缺.对于MFC.Delphi.Lazarus.Qt大家可能已经耳熟能详.对于很多图像处理的开源库,很多都是用C\C++写的,而.Net下的开源库以前很少了解 ...

  7. mac电脑 上强大的RAW图像处理工具 ——RAW Power

    苹果电脑曾经有一款名为Aperture的照片处理应用,最终因为苹果软件策略的更好与升级,这款应用已经被苹果砍掉.但Aperture的开发者们并未放弃这款应用,在Mac OS上推出了一款名为RAW Po ...

  8. 图像处理基本工具——Python 环境下的 Pillow( PIL )

    由于笔者近期的研究课题与图像后处理有关,需要通过图像处理工具对图像进行变换和处理,进而生成合适的训练图像数据.该系列文章即主要记录笔者在不同的环境下进行图像处理时常用的工具和库.在 Python 环境 ...

  9. Atitit 图像处理的摩西五经attilax总结

    Atitit 图像处理的摩西五经attilax总结 1. 数字图像处理(第三版)1 2. 图像处理基础(第2版)(世界著名计算机教材精选)1 3. 计算机视觉特征提取与图像处理(第三版)2 4. Op ...

随机推荐

  1. <choose><when><if>

    --说明:choose类似于switch,其中的when如果不符合则进入otherwise(类似于default),可以结合if标签使用. -- <select> -- SELECT * ...

  2. k8s node节点部署(v1.13.10)

    系统环境: node节点 操作系统: CentOS-7-x86_64-DVD-1908.iso node节点 IP地址: 192.168.1.204 node节点 hostname(主机名, 请和保持 ...

  3. linux中container_of

    linux 驱动程序中 container_of宏解析 众所周知,linux内核的主要开发语言是C,但是现在内核的框架使用了非常多的面向对象的思想,这就面临了一个用C语言来实现面向对象编程的问题,今天 ...

  4. C语言开发具有可变长参数的函数的方法

    学习交流可加 微信读者交流①群 (添加微信:coderAllen) 程序员技术QQ交流①群:736386324 --- 前提:ANSI C 为了提高可移植性, 通过头文件stdarg.h提供了一组方便 ...

  5. onreadystatechange和onload区别分析

    onreadystatechange和onload区别分析   script加载 IE的script 元素只支持onreadystatechange事件,不支持onload事件. FireFox,Op ...

  6. GlusterFS Dispersed Volume(纠错卷)总结

    https://blog.csdn.net/daydayup_gzm/article/details/52748812 一.概念 Dispersed Volume是基于ErasureCodes(纠错码 ...

  7. invoke和begininvoke 区别

    一直对invoke和begininvoke的使用和概念比较混乱,这两天看了些资料,对这两个的用法和原理有了些新的认识和理解. 首先说下,invoke和begininvoke的使用有两种情况: 1. c ...

  8. [Javascript] Window.matchMedia()

    window.matchMedia() allow to listen to browser window size changes and trigger the callback for diff ...

  9. [学习笔记] Miller-Rabin 质数测试

    Miller-Rabin 事先声明,因为菜鸡Hastin知识水平有限就是菜,因此语言可能不是特别规范,仅供理解. step 0 问一个数\(p\)是否为质数,\(p<=10^{18}\). 一个 ...

  10. SpringBoot整合JDBC模板

    目录 Grade实体类 public class Grade { private Integer gradeId; private String gradeName; public Grade(){ ...