如今,数据无处不在,图片是数据的重要组成部分。但不管图像是做什么用的,都需要经过处理。因此,图像处理是对数字图像进行分析和处理的过程,其主要目的是提高图像质量或从中提取一些有用的信息。图像处理中的常见任务包括图像显示、基本图像操作(裁剪、翻转、旋转等)、图像分割、分类和特征提取、图像复原和图像识别。Python作为一种科学的编程语言越来越受欢迎,许多最先进的图像处理工具在生态库中免费提供,因此成为图像处理的最佳选择。图片来源:LurikoYamaguchi/Pexels以下是一些可用于图像处理的常用Python库。1.scikitImagesscikit-image是Python的开源包,可将图像处理为numpy数组。它使算法和实用程序能够用于研究、教育和行业应用程序。即使对于那些不熟悉Python生态系统的人来说,该库也简单明了。此代码由活跃的志愿者团队编写,质量高且经过审查。来源:http://scikit-image.org/docs/stable/user_guide.html用法:该包作为skimage导入,大多数功能都在子模块中。例如:(1)图像过滤器importmatplotlib.pyplotasplt%matplotlibinlinefromskimageimportdata,filtersimage=data.coins()#...oranyotherNumPyarray!edges=filters.sobel(image)plt.imshow(edges,cmap='gray')(2)使用match_template函数进行模板匹配。更多示例门户:https://scikit-image.org/docs/dev/auto_examples2。NumpyNumpy是Python编程的核心库,提供对数组的支持。图像本质上是包含数据像素的标准Numpy数组。因此,通过使用基本的NumPy操作,如切片、掩码和匹配索引,可以修改图像的像素值。您还可以使用skimage加载图像并使用matplotlib显示它们。资源:http://www.numpy.org/使用:使用Numpy实现图像遮罩。importnumpyasnpfromskimageimportdataimportmatplotlib.pyplotasplt%matplotlibinlineimage=data.camera()type(image)numpy.ndarray#Imageisanumpyarraymask=image<87image[mask]=255plt.imshow(image,cmap='gray')3.scipy和Numpy一样,scipy是Python的另一个核心模块,可用于图像的基本处理和处理。特别是子模块scipy.ndimage提供了对n维NumPy数组进行操作的函数。该软件包目前包括用于线性和非线性滤波方法、二值图像形态学、B样条插值和对象测量的函数。资源:https://docs.scipy.org/doc/scipy/reference/tutorial/ndimage.html#correlation-and-convolution用途:使用SciPy的高斯滤波器模糊图像:fromscipyimportmisc,ndimageface=misc.face()blurred_face=ndimage.gaussian_filter(face,sigma=3)very_blurred=ndimage.gaussian_filter(face,sigma=5)#Resultsplt.imshow()4.PIL/PillowPIL(Python图像处理库)是一个免费的Python编程语言库支持打开、处理和保存各种格式的图像文件。但它的开发早已停滞不前,最后一次发布是在2009年。幸运的是,Pillow是PIL的一个积极开发的分支,它更容易安装,可以在所有主要操作系统上运行,并支持Python3。该库包括基本的图像处理功能,例如点操作、使用一组内置卷积核的图像过滤和颜色空间转换。资源:https://pillow.readthedocs.io/en/3.1.x/index.html用途:使用Pillow中的ImageFilter增强图像:fromPILimportImage,ImageFilter#Readimageim=Image.open('image.jpg')#Displayimageim。show()fromPILimportImageEnhanceImageEnhanceenh=ImageEnhance.Contrast(im)enh.enhance(1.8).show("30%morecontrast")更多资源传送门:http://sipi.usc.edu/database/5。OpenCV-PythonOpenCV(开源计算机视觉库)是计算??机视觉应用程序中使用最广泛的库之一。OpenCV-Python是OpenCV的python接口。OpenCV-Python速度很快,不仅因为后端由用C/C++编写的代码组成,还因为前端的Python包装器使编码和部署变得容易。因此,它是计算密集型计算机视觉程序的绝佳选择。资源:https://github.com/abidrahmank/OpenCV2-Python-Tutorials用途:在下图中,OpenCV-Python在图像融合中使用图像金字塔来创建一种名为“Orapple”的新型水果。代码传送门:https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_pyramids/py_pyramids.html#pyramids6。SimpleCVSimpleCV也是一个用于构建计算机视觉应用程序的开源框架。使用SimpleCV,可以访问多个高性能计算机视觉库,例如OpenCV,而无需预先了解位深度、文件格式和颜色空间。它的学习曲线比OpenCV小得多,正如其标语所说,“使用SimpleCV轻松实现计算机视觉”。SimpleCV的优点是:即使是初级程序员也可以编写简单的机器视觉测试相机、视频文件、图像和视频流都是可以互操作的资源:https://simplecv.readthedocs.io/en/latest/用途:7.MahotasMahotas是Python中的另一个计算机视觉和图像处理库,它包含过滤和形态学操作等传统图像处理功能,以及兴趣点检测和用于特征计算的局部描述符等现代计算机视觉功能。接口使用Python,适合快速开发,但算法用C++实现,并针对速度进行了调整。Mahotas库由于其代码简单和最小依赖性而速度很快。来源:https://mahotas.readthedocs.io/en/latest/install.html用途:Mahotas库使用简单的代码完成工作。对于“寻找沃利”的问题,Mahotas用最少的代码很好地解决了。源码传送门:https://mahotas.readthedocs.io/en/latest/wally.html8.SimpleITKITK或InsightSegmentationandRegistrationToolkit是一个开源的跨平台系统,为开发者提供一整套图像分析工具软件工具。其中,SimpleITK是建立在ITK之上的简化层,旨在促进其在快速原型设计、教育和解释型语言中的应用。SimpleITK是一个图像分析工具包,包含大量支持一般过滤操作、图像分割和图像配准的组件。SimpleITK本身是用C++编写的,但可用于包括Python在内的多种编程语言。资源:http://insightsoftwareconsortium.github.io/SimpleITK-Notebooks/用途:以下动画用于使用SimpleITK和Python可视化严格的CT/MR定位过程。源码传送门:https://github.com/InsightSoftwareConsortium/SimpleITK-Notebooks/blob/master/Utilities/intro_animation.py9。pgmagickPgmagick是基于Python的GraphicsMagick库包装器。GraphicsMagick图像处理系统有时被称为图像处理的瑞士军刀。它提供了一套强大而高效的工具和库,支持读取、写入和操作超过88种图像格式,包括DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM和TIFF。格式。资源:Github存储库:https://github.com/hhatto/pgmagick用户指南:https://pgmagick.readthedocs.io/en/latest/用途:pgmagick可以对图像执行有限的操作,包括:(1)图像缩放:(2)边缘提取:10.PycairoPycairo是图形库cairo的一套python包。Cairo是一个用于绘制矢量图形的2D图形库。矢量图形很有趣,并且在调整大小或转换时它们的清晰度不会受到影响。Pycairo可以从Python中为cairo调用cairo命令。资源:GitHub仓库:https://github.com/pygobject/pycairo入门指南:https://pycairo.readthedocs.io/en/latest/tutorial.html用途:Pycairo可以用来画线,画基本形状和直径梯度: