当前位置: 首页 > 科技观察

10个Python图像编辑工具

时间:2023-03-13 16:43:28 科技观察

下面提到的这些Python工具提供了简单直接的编辑图像和操作图像底层数据的方法。当今世界充满了数据,图像数据是其中的重要组成部分。但是,这些图像数据只有经过处理和分析,才能提高图像质量,从中提取有效信息才能加以利用。常见的图像处理操作包括显示图像、裁剪、翻转、旋转等基本图像操作;图像分割、分类和特征提取;图像修复;和图像识别等。Python,一种日益流行的科学编程语言,是这些图像处理操作的选择。同时,Python生态中还有很多优秀的图像处理工具可以免费使用。下面将介绍10个可用于图像处理任务的Python库,它们提供了简单直接的编辑图像和查看图像底层数据的方法。1.scikit-imagescikit-image是一个与NumPy数组结合使用的开源Python工具,它实现了可用于研究、教育和工业应用的算法和应用程序。这是一个使用起来非常简单的库,即使对于Python生态系统的新手也是如此。同时,它的代码质量也很高,因为它是由一个活跃的志愿者社区开发的,并且已经通过了同行评审。资源scikit-image有大量用例的详细记录。这些示例可以通过导入skimage来使用,大部分功能都可以在它的子模块中找到。Imagefiltering图像过滤:importmatplotlib.pyplotasplt%matplotlibinlinefromskimageimportdata,filtersimage=data.coins()#...oranyotherNumPyarray!edges=filters.sobel(image)plt.imshow(edges,cmap='gray')scikit-image中的图片过滤使用match_template()方法实现模板匹配templatematching:scikit-image中的Templatematching可以在演示页面看到更多相关示例。2、NumPyNumPy提供对数组的支持,是Python编程的核心库。图像的本质其实是一个包含像素数据点的标准NumPy数组,因此通过一些基本的NumPy操作(如切片、maskmask、fancyindexing等),可以从像素层面对图像进行编辑。存储为NumPy数组的图像也可以通过skimage加载并使用matplotlib显示。资源NumPy的官方文档中提供了完整的代码文档和资源列表。该示例使用NumPy对图像进行掩码操作:importnumpyasnpfromskimageimportdataimportmatplotlib.pyplotasplt%matplotlibinlineimage=data.camera()type(image)numpy.ndarray#ImageisaNumPyarray:mask=image<87image[mask]=255plt.imshow(image,cmap='gray')NumPy3,SciPy和NumPy一样,SciPy是Python的核心科学计算模块,也可以用于图像的基本运算和处理。特别是,SciPyv1.1.0中的scipy.ndimage子模块提供了对n维NumPy数组进行操作的函数。SciPy目前还提供用于线性和非线性过滤、二元形态学、B样条插值和对象测量的函数。资源可以在官方文档中找到scipy.ndimage函数的完整列表。使用SciPy的高斯滤波器模糊图像的示例:fromscipyimportmisc,ndimageface=misc.face()blurred_face=ndimage.gaussian_filter(face,sigma=3)very_blurred=ndimage.gaussian_filter(face,sigma=5)#Resultsplt.imshow(<要显示的图像>)PIL/PillowPIL(PythonImagingLibrary)使用SciPy4中的高斯滤波器,是一个免费的Python编程库,支持打开、编辑和保存各种格式的图像文件。但在2009年之后PIL停止发布新版本。幸运的是,还有一个积极开发的PIL分支Pillow,它的安装过程比PIL更简单,支持大多数主要操作系统,还支持Python3。Pillow包括基本的图像处理功能,包括像素操作,使用内置过滤在卷积核、色彩空间转换等方面。资源Pillow的官方文档提供了Pillow的安装说明以及每个模块在其自己的代码库中的示例。该示例使用Pillow中的ImageFilter模块实现图像增强:fromPILimportImage,ImageFilter#Readimageim=Image.open('image.jpg')#Displayimageim.show()fromPILimportImageEnhanceenh=ImageEnhance.Contrast(im)enh.enhance(1.8).show("30%morecontrast")EnhanceinganimageinPillowusingImageFilter源代码5、OpenCV-PythonOpenCV(开源计算机视觉库)是该领域使用最广泛的库之一计算机视觉,OpenCV-Python是OpenCV的PythonAPI。OpenCV-Python运行速度非常快,得益于它的后台代码是用C/C++编写的,而且因为是用Python封装的,所以调用和部署并不困难。这些优势使OpenCV-Python成为计算密集型计算机视觉应用程序的不错选择。在开始使用资源之前,最好先阅读OpenCV2-Python-Guide文档。该示例使用OpenCV-Python中的PyramidBlending将苹果和橙子混合在一起:Im??ageblendingusingPyramidsinOpenCV-PythonSourceCode6,SimpleCVSimpleCV是一个开源计算机视觉框架。支持包括OpenCV在内的一些高性能计算机视觉库,不需要了解位深度、文件格式、色彩空间等概念,因此SimpleCV的学习曲线比OpenCV平缓很多,就像它的“计算机”愿景变得简单,”它的标语说。SimpleCV的优点是:即使是刚接触计算机视觉的程序员也可以使用SimpleCV实现一些简单的计算机视觉测试录制,视频文件、图片、视频流都支持。伴随着大量的学习用例。示例SimpleCV7,MahotasMahotas是另一个Python图像处理和计算机视觉库。在图像处理方面,支持滤波和形态学相关操作;在计算机视觉方面,它还支持特征计算、兴趣点检测和局部描述符等特性。Mahotas的界面是用Python编写的,适合快速开发,而算法是用C++实现的,并针对速度进行了优化。Mahotas使用尽可能少的代码和尽可能少的依赖项,因此它运行起来非常快。您可以参考官方文档了解更多详情。资源文档包含安装说明、示例和一些Mahotas入门教程。示例Mahotas力图使用少量代码实现功能。比如这款FindingWally游戏:FindingWallyprobleminMahotasFindingWallyprobleminMahotassourcecode8,SimpleITKITK(InsightSegmentationandRegistrationToolkit)是一个开源的、跨平台的工具包,为开发者提供通用的图像分析功能。SimpleITK是基于ITK构建的一个简化层,方便ITK在快速原型制作、教育、解释型语言中的使用。作为一个图像分析工具包,SimpleITK也有大量的组件可以支持常规的过滤、图像分割、图像配准等功能。虽然SimpleITK是用C++编写的,但它支持包括Python在内的大多数编程语言。资源有许多JupyterNotebooks用例展示了SimpleITK在教育和研究领域的使用。通过这些用例,可以看到如何使用SimpleITK使用Python和R实现交互式图像分析。使用Python+SimpleITK实现的CT/MR图像配准过程的一个例子:SimpleITK动画源码9,pgmagickpgmagick是封装好的GraphicsMagick库在Python中。GraphicsMagick经常被认为是图像处理的瑞士军刀,因为其强大高效的工具包支持读写多达88种主流图像文件格式,包括DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM、TIFF等.资源pgmagick的GitHub仓库有相关的安装说明、依赖列表和详细的使用指南。图像缩放示例:pgmagick源码中的图像缩放边缘提取:pgmagick源码中的边缘提取10、PycairoCairo是一个绘制矢量图的二维图形库,Pycairo是Cairo的一套Python绑定。矢量图形的优点是在缩放过程中不会损失图像的清晰度。使用Pycairo在Python中调用Cairo相关命令。资源Pycairo的GitHub存储库提供了有关安装和使用的详细说明,以及简要介绍Pycairo的入门指南。示例使用Pycairo绘制线段、基本图形、径向渐变:Pycairo源码总结以上是Python中一些有用的图像处理库,无论你听说过还是使用过,都值得尝试和了解。