diff --git a/translated/tech/20190318 10 Python image manipulation tools.md b/translated/tech/20190318 10 Python image manipulation tools.md index fc9653f4c7..664f83fe72 100644 --- a/translated/tech/20190318 10 Python image manipulation tools.md +++ b/translated/tech/20190318 10 Python image manipulation tools.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (HankChow) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (10 Python image manipulation tools) @@ -10,19 +10,19 @@ 10 个 Python 图像编辑工具 ====== -以下提到的这些 Python 工具在编辑图像、操作图像底层数据方面都提供了简单直接的方法。 +> 以下提到的这些 Python 工具在编辑图像、操作图像底层数据方面都提供了简单直接的方法。 ![][1] -当今的世界充满了可以被利用的数据,而图像数据就是其中很重要的一部分。但只有经过处理和分析,提高图像的质量,从中提取出有效地信息,才能利用到这些图像数据。 +当今的世界充满了数据,而图像数据就是其中很重要的一部分。但只有经过处理和分析,提高图像的质量,从中提取出有效地信息,才能利用到这些图像数据。 -常见的图像处理操作包括显示图像,图像的裁剪、翻转、旋转,图像的分割、分类、特征提取,图像识别,以及图像识别等等。Python 作为一种日益风靡的科学编程语言,是这些图像处理操作的最佳选择。同时,在 Python 生态当中也有很多优秀的图像处理工具可以被免费使用。 +常见的图像处理操作包括显示图像,基本的图像操作,如裁剪、翻转、旋转;图像的分割、分类、特征提取;图像恢复;以及图像识别等等。Python 作为一种日益风靡的科学编程语言,是这些图像处理操作的最佳选择。同时,在 Python 生态当中也有很多可以免费使用的优秀的图像处理工具。 -下文将介绍 10 个可以用于图像处理任务的 Python 工具,它们在编辑图像、查看图像底层数据方面都提供了简单直接的方法。 +下文将介绍 10 个可以用于图像处理任务的 Python 库,它们在编辑图像、查看图像底层数据方面都提供了简单直接的方法。 -### 1\. scikit-image +### 1、scikit-image -[scikit-image][2] 是一个结合 [NumPy][3] 数组使用的开源 Python 工具,它实现了可用于研究、教育、工业应用的算法和应用程序。即使是对于刚刚接触 Python 生态圈的新手来说,它也是一个在使用上足够简单的库。同时它的代码质量也足够高,因为它是由一个活跃的志愿者社区开发的,并且通过了同行评审peer review。 +[scikit-image][2] 是一个结合 [NumPy][3] 数组使用的开源 Python 工具,它实现了可用于研究、教育、工业应用的算法和应用程序。即使是对于刚刚接触 Python 生态圈的新手来说,它也是一个在使用上足够简单的库。同时它的代码质量也很高,因为它是由一个活跃的志愿者社区开发的,并且通过了同行评审peer review。 #### 资源 @@ -30,7 +30,7 @@ scikit-image 的[文档][4]非常完善,其中包含了丰富的用例。 #### 示例 -通过 `import skimage` 就可以导入 scikit-image,大部分的功能都可以在它的子模块中找到。 +可以通过导入 `skimage` 使用,大部分的功能都可以在它的子模块中找到。 图像滤波image filtering: @@ -53,9 +53,9 @@ plt.imshow(edges, cmap='gray') 在[展示页面][10]可以看到更多相关的例子。 -### 2\. NumPy +### 2、NumPy -[NumPy][11] 提供了对数组的支持,是 Python 编程的一个核心库。图像的本质其实也是一个包含数据点像素的标准 NumPy 数组,因此可以通过一些基本的 NumPy 操作(例如切片、掩码、花式索引等),就可以从像素级别对图像进行编辑。通过 NumPy 数组存储的图像也可以被 skimage 加载并使用 matplotlib 显示。 +[NumPy][11] 提供了对数组的支持,是 Python 编程的一个核心库。图像的本质其实也是一个包含像素数据点的标准 NumPy 数组,因此可以通过一些基本的 NumPy 操作(例如切片、掩膜mask花式索引fancy indexing等),就可以从像素级别对图像进行编辑。通过 NumPy 数组存储的图像也可以被 skimage 加载并使用 matplotlib 显示。 #### 资源 @@ -63,7 +63,7 @@ plt.imshow(edges, cmap='gray') #### 示例 -使用 NumPy 对图像进行掩码操作: +使用 NumPy 对图像进行掩膜mask操作: ``` import numpy as np @@ -82,17 +82,18 @@ plt.imshow(image, cmap='gray') ![NumPy][13] -### 3\. SciPy +### 3、SciPy -[SciPy][14] 是 Python 的一个核心科学计算模块,也可以用于图像的基本操作和处理。尤其是 SciPy v1.1.0 中的 [scipy.ndimage][15] 子模块,它提供了在 n 维 NumPy 数组上的运行的函数。SciPy 目前还提供了线性和非线性滤波linear and non-linear filtering二值形态学binary morphologyB 样条插值B-spline interpolation对象测量object measurements等方面的函数。 +像 NumPy 一样,[SciPy][14] 是 Python 的一个核心科学计算模块,也可以用于图像的基本操作和处理。尤其是 SciPy v1.1.0 中的 [scipy.ndimage][15] 子模块,它提供了在 n 维 NumPy 数组上的运行的函数。SciPy 目前还提供了线性和非线性滤波linear and non-linear filtering二值形态学binary morphologyB 样条插值B-spline interpolation对象测量object measurements等方面的函数。 #### 资源 -在[官方文档][16]中可以查阅到 scipy.ndimage 的完整函数列表。 +在[官方文档][16]中可以查阅到 `scipy.ndimage` 的完整函数列表。 #### 示例 使用 SciPy 的[高斯滤波][17]对图像进行模糊处理: + ``` from scipy import misc,ndimage @@ -106,9 +107,9 @@ plt.imshow() ![Using a Gaussian filter in SciPy][19] -### 4\. PIL/Pillow +### 4、PIL/Pillow -PIL (Python Imaging Library) 是一个自由的 Python 编程库,它提供了对多种格式图像文件的打开、编辑、保存的支持。但在 2009 年之后 PIL 就停止发布新版本了。幸运的是,还有一个 PIL 的积极开发的分支 [Pillow][20],它的安装过程比 PIL 更加简单,支持大部分主流的操作系统,并且还支持 Python 3。Pillow 包含了图像的基础处理功能,包括像素点操作、使用内置卷积内核进行滤波、颜色空间转换等等。 +PIL (Python Imaging Library) 是一个免费 Python 编程库,它提供了对多种格式图像文件的打开、编辑、保存的支持。但在 2009 年之后 PIL 就停止发布新版本了。幸运的是,还有一个 PIL 的积极开发的分支 [Pillow][20],它的安装过程比 PIL 更加简单,支持大部分主流的操作系统,并且还支持 Python 3。Pillow 包含了图像的基础处理功能,包括像素点操作、使用内置卷积内核进行滤波、颜色空间转换等等。 #### 资源 @@ -132,9 +133,9 @@ enh.enhance(1.8).show("30% more contrast") ![Enhancing an image in Pillow using ImageFilter][23] -[源码][24] +- [源码][24] -### 5\. OpenCV-Python +### 5、OpenCV-Python OpenCV(Open Source Computer Vision 库)是计算机视觉领域最广泛使用的库之一,[OpenCV-Python][25] 则是 OpenCV 的 Python API。OpenCV-Python 的运行速度很快,这归功于它使用 C/C++ 编写的后台代码,同时由于它使用了 Python 进行封装,因此调用和部署的难度也不大。这些优点让 OpenCV-Python 成为了计算密集型计算机视觉应用程序的一个不错的选择。 @@ -149,9 +150,9 @@ OpenCV(Open Source Computer Vision 库)是计算机视觉领域最广泛使 ![Image blending using Pyramids in OpenCV-Python][28] -[源码][29] +- [源码][29] -### 6\. SimpleCV +### 6、SimpleCV [SimpleCV][30] 是一个开源的计算机视觉框架。它支持包括 OpenCV 在内的一些高性能计算机视觉库,同时不需要去了解位深度bit depth、文件格式、色彩空间color space之类的概念,因此 SimpleCV 的学习曲线要比 OpenCV 平缓得多,正如它的口号所说,“将计算机视觉变得更简单”。SimpleCV 的优点还有: @@ -164,13 +165,11 @@ OpenCV(Open Source Computer Vision 库)是计算机视觉领域最广泛使 #### 示例 -### [7-_simplecv.png][32] - ![SimpleCV][33] -### 7\. Mahotas +### 7、Mahotas -[Mahotas][34] 是一个 Python 图像处理和计算机视觉库。在图像处理方面,它支持滤波和形态学相关的操作;在计算机视觉方面,它也支持特征计算feature computation兴趣点检测interest point detection局部描述符local descriptors等功能。Mahotas 的接口使用了 Python 进行编写,因此适合快速开发,而算法使用 C++ 实现,并针对速度进行了优化。Mahotas 尽可能做到代码量少和依赖项少,因此它的运算速度非常快。可以参考[官方文档][35]了解更多详细信息。 +[Mahotas][34] 是另一个 Python 图像处理和计算机视觉库。在图像处理方面,它支持滤波和形态学相关的操作;在计算机视觉方面,它也支持特征计算feature computation兴趣点检测interest point detection局部描述符local descriptors等功能。Mahotas 的接口使用了 Python 进行编写,因此适合快速开发,而算法使用 C++ 实现,并针对速度进行了优化。Mahotas 尽可能做到代码量少和依赖项少,因此它的运算速度非常快。可以参考[官方文档][35]了解更多详细信息。 #### 资源 @@ -182,15 +181,13 @@ Mahotas 力求使用少量的代码来实现功能。例如这个 [Finding Wally ![Finding Wally problem in Mahotas][39] -[源码][40] - ![Finding Wally problem in Mahotas][42] -[源码][40] +- [源码][40] -### 8\. SimpleITK +### 8、SimpleITK -[ITK][43](Insight Segmentation and Registration Toolkit)是一个为开发者提供普适性图像分析功能的开源、跨平台工具,[SimpleITK][44] 则是基于 ITK 构建出来的一个简化层,旨在促进 ITK 在快速原型设计、教育、解释语言中的应用。SimpleITK 作为一个图像分析工具包,它也带有[大量的组件][45],可以支持常规的滤波、图像分割、图像配准registration功能。尽管 SimpleITK 使用 C++ 编写,但它也支持包括 Python 在内的大部分编程语言。 +[ITK][43](Insight Segmentation and Registration Toolkit)是一个为开发者提供普适性图像分析功能的开源、跨平台工具套件,[SimpleITK][44] 则是基于 ITK 构建出来的一个简化层,旨在促进 ITK 在快速原型设计、教育、解释语言中的应用。SimpleITK 作为一个图像分析工具包,它也带有[大量的组件][45],可以支持常规的滤波、图像分割、图像配准registration功能。尽管 SimpleITK 使用 C++ 编写,但它也支持包括 Python 在内的大部分编程语言。 #### 资源 @@ -202,9 +199,9 @@ Mahotas 力求使用少量的代码来实现功能。例如这个 [Finding Wally ![SimpleITK animation][48] -[源码][49] +- [源码][49] -### 9\. pgmagick +### 9、pgmagick [pgmagick][50] 是使用 Python 封装的 GraphicsMagick 库。[GraphicsMagick][51] 通常被认为是图像处理界的瑞士军刀,因为它强大而又高效的工具包支持对多达 88 种主流格式图像文件的读写操作,包括 DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM、TIFF 等等。 @@ -218,15 +215,15 @@ pgmagick 的 [GitHub 仓库][52]中有相关的安装说明、依赖列表,以 ![Image scaling in pgmagick][55] -[源码][56] +- [源码][56] 边缘提取: ![Edge extraction in pgmagick][58] -[源码][59] +- [源码][59] -### 10\. Pycairo +### 10、Pycairo [Cairo][61] 是一个用于绘制矢量图的二维图形库,而 [Pycairo][60] 是用于 Cairo 的一组 Python 绑定。矢量图的优点在于做大小缩放的过程中不会丢失图像的清晰度。使用 Pycairo 可以在 Python 中调用 Cairo 的相关命令。 @@ -240,7 +237,7 @@ Pycairo 的 [GitHub 仓库][62]提供了关于安装和使用的详细说明, ![Pycairo][65] -[源码][66] +- [源码][66] ### 总结 @@ -253,7 +250,7 @@ via: https://opensource.com/article/19/3/python-image-manipulation-tools 作者:[Parul Pandey][a] 选题:[lujun9972][b] 译者:[HankChow](https://github.com/HankChow) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出