收藏!10 个 Python 图像处理工具
共 4171字,需浏览 9分钟
·
2023-06-05 15:10
这些 Python 库提供了一种简单直观的方法来转换图像并理解底层数据。
今天的世界充满了数据,图像是这些数据的重要组成部分。但是,在使用它们之前,必须对这些数字图像进行处理 - 分析和操作,以提高其质量或提取一些可以使用的信息。
常见的图像处理任务包括显示;基本操作如裁剪,翻转,旋转等;;图像分割,分类和特征提取;图像恢复;图像识别。Python 是这些图像处理任务的绝佳选择,因为它作为一种科学编程语言日益普及,并且在其生态系统中免费提供许多最先进的图像处理工具。
本文着眼于 10 个最常用的 Python 库,用于图像处理任务。这些库提供了一种简单直观的方法来转换图像并理解底层数据。
1. scikit-image
scikit-image 是一个与 NumPy 数组一起使用的开源 Python 包。它实现了用于研究,教育和行业应用的算法和实用程序。它是一个相当简单直接的库,即使对那些不熟悉 Python 生态系统的人也是如此。代码质量高,经过同行评审,由一个活跃的志愿者社区编写。
资源
scikit-image 文档丰富,有很多示例和实际使用方法。
用法
该包通过 skimage 导入,大多数功能可以在子模块中找到。
图像过滤:
![4f6a9d594b8828903d1fc66076a68785.webp](https://filescdn.proginn.com/4a86826cc610196846a324f81a1e92a9/4f6a9d594b8828903d1fc66076a68785.webp)
![78bf494fb842a8ba7bace4d2ace6fe85.webp](https://filescdn.proginn.com/cdc6d595485c086c7f84b3e3b12ec558/78bf494fb842a8ba7bace4d2ace6fe85.webp)
使用 match_template 函数进行模板匹配:
![42d5a8233bcfe4838a5383e579d26bd7.webp](https://filescdn.proginn.com/e396a30baee1d6483852929cc5c7db71/42d5a8233bcfe4838a5383e579d26bd7.webp)
你可以在 gallery 中找到更多的例子。
2. NumPy
NumPy 是 Python 编程中的核心库之一,并为数组提供支持。图像本质上是包含数据点像素的标准 NumPy 数组。因此,通过使用基本的 NumPy 操作(如 slicing,masking 和 fancy indexing),您可以修改图像的像素值。可以使用 skimage 加载图像并使用 Matplotlib 显示。
资源
NumPy 的官方文档页面提供了完整的资源和文档列表。
用法
使用 Numpy 来 mask:
![a7096c880c6638ef4589d67cae2d6b60.webp](https://filescdn.proginn.com/dcf9175f7998577e7628425c99687a69/a7096c880c6638ef4589d67cae2d6b60.webp)
![ce6f1da1e72726b3f0cf6425850aec69.webp](https://filescdn.proginn.com/ddbbc266c47fb84ba5fab8ef1eafaaaa/ce6f1da1e72726b3f0cf6425850aec69.webp)
3. SciPy
SciPy 是 Python 的另一个核心科学模块(如 NumPy),可用于基本的图像操作和处理任务。特别是,子模块 scipy.ndimage(在 SciPy v1.1.0 中)提供了在 n 维 NumPy 数组上运行的函数。该软件包目前包括线性和非线性滤波,二进制形态,B 样条插值和对象测量等功能。
资源
有关 scipy.ndimage 包所提供的完整功能列表,请参阅文档。
用法
使用 SciPy 通过高斯滤波器进行模糊
![eb1bd59394944a11bdb020c7eb4a4382.webp](https://filescdn.proginn.com/85a3ea5ec88cb219c2e1773140d9f0d7/eb1bd59394944a11bdb020c7eb4a4382.webp)
![dfc5b57dce78f03c9605885f49277c9e.webp](https://filescdn.proginn.com/6be1796bf15eeb88095544db19bcce2e/dfc5b57dce78f03c9605885f49277c9e.webp)
4. PIL/Pillow
PIL(Python Imaging Library)是一个免费的 Python 编程语言库,它增加了对打开,操作和保存许多不同图像格式的支持。然而,它的发展停滞不前,其最后一版发布于 2009 年。幸运的是,Pillow 是一个积极开发的PIL分支,它更易于安装,可在所有主流操作系统上运行,并支持 Python 3。该库包含基本图像处理功能,包括点操作,使用一组内置卷积内核进行过滤以及颜色空间转换。
资源
文档包含安装说明以及涵盖库的每个模块的示例。
用法
使用 ImageFilter 增强 Pillow 中的图像:
![20a1bce0914b258e5b85f801306bb128.webp](https://filescdn.proginn.com/c2e743ed8f6943b266b7f552db9a0969/20a1bce0914b258e5b85f801306bb128.webp)
5. OpenCV-Python
OpenCV(Open Source Computer Vision Library)是计算机视觉应用中使用最广泛的库之一。OpenCV-Python 是 OpenCV 的 Python API。因为后台由 C / C ++ 编写的代码组成,OpenCV-Python 速度很快快,但它也很容易编码和部署(由于前端的 Python 包装器)。这使其成为执行计算密集型计算机视觉程序的绝佳选择。
资源
通过 OpenCV2-Python-Guide 可以很容易上手 OpenCV-Python
用法
使用 OpenCV-Python 中的 Image Blending using Pyramids 创建一个 “Orapple”:
![491d5f2455d625f5a98a571e67bf3c82.webp](https://filescdn.proginn.com/8be91b139607f1c0d843fdce496b78d6/491d5f2455d625f5a98a571e67bf3c82.webp)
6. SimpleCV
SimpleCV 是另一个用于构建计算机视觉应用程序的开源框架。它提供访问几个高性能计算机视觉库,如 OpenCV,的接口,但无需了解位深度,文件格式,色彩空间等。它的学习曲线远小于 OpenCV,并且(如其标语所示),“它令计算机视觉变得简单。”支持 SimpleCV 的一些观点是:
即使是初学者也可以编写简单的机器视觉测试
摄像机,视频文件,图像和视频流都可以互操作
资源
很容易按照官方文档的指导进行操作,并有大量的示例和用例可供遵循。
用法
![6f6ca8c47c1650827a3a2a7d1decde3d.webp](https://filescdn.proginn.com/4705217c9c9774dbdda2056abc5d3044/6f6ca8c47c1650827a3a2a7d1decde3d.webp)
7. Mahotas
Mahotas 是另一个用于 Python 的计算机视觉和图像处理库。它包含传统的图像处理功能,如过滤和形态操作,以及用于特征计算的更现代的计算机视觉功能,包括兴趣点检测和局部描述符。使用 Python 编写接口,适用于快速开发,但算法是用 C ++ 实现的,并且针对速度进行了优化。Mahotas 库运行快速,代码简约,依赖性小。阅读其官方文章以获得更多了解。
资源
文档包含安装说明,示例,甚至一些教程帮助您轻松开始使用 Mahotas。
用法
Mahotas 库依靠简单的代码来完成工作。例如,使用最少量的代码 Finding Wally 问题就可以很好地解决。
解决 Finding Wally 问题:
![58d06c59d386151cd6288b6d89ca90df.webp](https://filescdn.proginn.com/b1ca511f63cc81d15b581ac8836c9c83/58d06c59d386151cd6288b6d89ca90df.webp)
![d0daa96f2b984ff3d727d8ff02d92bba.webp](https://filescdn.proginn.com/829422fa61a1806458671aa134e0a9f1/d0daa96f2b984ff3d727d8ff02d92bba.webp)
8. SimpleITK
ITK(Insight Segmentation and Registration Toolkit)是一个“开源,跨平台系统,为开发人员提供了一套用于图像分析的广泛软件工具。SimpleITK 是一个基于 ITK 构建的简化层,旨在促进其在快速原型设计,交易以及解释语言方面的应用。”它也是一个图像分析工具包,具有大量组件,支持一般过滤操作,图像分割和配准。SimpleITK 是用 C ++ 编写的,但它可用包括 Python 在内的大量编程语言进行操作。
资源
有大量的 Jupyter Notebook 说明了 SimpleITK 在教育和研究活动中的应用。Notebooks 使用 Python 和 R 编程语言演示如何使用 SimpleITK 进行交互式图像分析。
用法
使用 SimpleITK 和 Python 创建可视化的严格 CT / MR 配准过程:
![17d7c328aab483665316c5e1f053e0ed.webp](https://filescdn.proginn.com/b8bbb52e4b2e8dee50fabbce55111510/17d7c328aab483665316c5e1f053e0ed.webp)
9. pgmagick
pgmagick 是基于 Python 的 GraphicsMagick 库的包装器。GraphicsMagick 图像处理系统,有时也被称为图像处理的瑞士军刀。其强大而高效的工具和库集合支持在超过 88 种主要格式(包括 DPX,GIF,JPEG,JPEG-2000,PNG,PDF,PNM 和 TIFF)上读取,写入和操作图像。
资源
pgmagick 的 GitHub respository 有安装说明和要求。还有一个详细的用户指南。
用法
图像缩放:
![b7ca0bae1b7e5529f2719cdfd4695d2a.webp](https://filescdn.proginn.com/c744451a6c43863a04dec22263b16a7b/b7ca0bae1b7e5529f2719cdfd4695d2a.webp)
边缘提取:
![70182209e211eb61ac6cd8a7bba462bc.webp](https://filescdn.proginn.com/b63c1d0d92288102d9d93572a12f7056/70182209e211eb61ac6cd8a7bba462bc.webp)
10. Pycairo
Pycairo 是 Cairo 图形库的一组 Python 绑定。Cairo 是一个用于绘制矢量图形的 2D 图形库。矢量图形很有趣,因为它们在调整大小或变换时不会失去清晰度。Pycairo 可以从 Python 调用 Cairo 命令。
资源
Pycairo GitHub respository 是一个很好的资源,包含有关安装和使用的详细说明。还有一个入门指南,有一个关于 Pycairo 的简短教程。
用法
用 Pycairo 绘制线条,基本形状和径向渐变:
![5709a5c75b188e007f85cd8b6a3deec9.webp](https://filescdn.proginn.com/e75796f0ce416a2a060fdf1256a04858/5709a5c75b188e007f85cd8b6a3deec9.webp)
结论
这些是 Python 中一些有用且免费提供的图像处理库。有些是众所周知的,有些可能对你来说是新的。尝试一下它们以了解更多关于它们的信息!
![ee88a26890fd97b3bbf487a1a4a56c78.webp](https://filescdn.proginn.com/8965bfa5079606faa63f2ac803596c9a/ee88a26890fd97b3bbf487a1a4a56c78.webp)
End
欢迎大家加入【ChatGPT&AI 变现圈】,零门槛掌握 AI 神器!我们带你从小白到高手,解锁智能问答、自动化创作、技术变现的无限可能。与我们共同成长,开启 AI 新征程!立即行动,未来已来!(详情请戳:知识星球:ChatGPT&AI 变现圈,正式上线!)
扫码加入:
![3504889a22ecad6d1785fcedeebd2b2d.webp](https://filescdn.proginn.com/061745ff3b3917ba32622695d5caebed/3504889a22ecad6d1785fcedeebd2b2d.webp)
点个在看你最好看
![33d75bc319b579f0f9cdaea0adf7034c.webp](https://filescdn.proginn.com/12601eabd5653ec0430ef337700a2654/33d75bc319b579f0f9cdaea0adf7034c.webp)