比较不同Python图形处理库或图像处理库的异同点

发布时间 2023-05-22 17:11:10作者: 王庆园

python的图像处理库有很多种比如:pillow库 、Numpy库、Scipy库、opencv库、pgmagic库等

其中较常用的是NUmapy库、pillow库 、openCV库,今天我们就这三种图像处理库来进行比较

首先是numapy库;

他是一个python库可以帮助我们处理所有类型的科学计算,他是在执行任何数据预处理或数据科学相关任务是导入的第一个库,处理图像可以说是一个”副业“

使用他我们可以非常方便的操纵图像的RGB值其操作代码:


from PIL import Image
import numpy as np
img = np.array(Image.open('0.jpg'))
img_red = img.copy()
img_red[:, :, (1, 2)] = 0
img_green = img.copy()
img_green[:, :, (0, 2)] = 0
img_blue = img.copy()
img_blue[:, :, (0, 1)] = 0
img_ORGB = np.concatenate((img,img_red, img_green, img_blue), axis=1)
img_converted = Image.fromarray(img_ORGB)
img_converted.show() ## Combine Image Contains 

其次就pillow库他是python中最常用的图像处理库之一,它提供了许多可以用来操纵图像的函数,例如:调整大小,改变滤镜,等等是python中常用且便捷的操作可之一

下面是一个可以使图片对比度更加明显的代码:


from PIL import Image,ImageEnhance
img_original = Image.open("dark.jpg")
img_original.show("Original Image")
img = ImageEnhance.Contrast(img_original)
img.enhance(3.8).show("Image With More Contrast")

openCV库也是python中最常用的图像处理库之一,他的有点在于他可以方便的与网络摄像头图像和视频进行交互,并且他可以执行多种实时任务,

目前主要应用于人脸识别检测,和目标检测等

下面是应用他进行crop操作的代码样例:


import cv2
img = cv2.imread("images/test.jpg")
imgCropped = img[50:283,25:190]
shape = imgCropped.shape
print(shape[0])
imgCropped = cv2.resize(imgCropped,(shape[0]*12//10,shape[1]*2))
cv2.imshow("Image cropped",imgCropped)
cv2.imshow("Image",img)
cv2.waitKey(0)

除了上述三中提到的图像处理课歪还有一种图像处理库其作用和pillow库很相似只不过他多用于处理图像的旋转、锐化、简便等操作他就是pgmagick库

他其实是graphicsMagick库的补充下面是锐化带样例代码:


from pgmagick.api import Image
img = Image('fox.png')
# scaling image up to 1.5x
img.scale((150, 100), 'fox_scaled')

上述介绍了几种图像处理库的大概功能下面叙述其各自优缺点以及异同点

1.scikit-image

scikit-image是一个开源的Python包,适用于numpy数组。它实现了用于研究,教育和工业应用的算法和实用工具。即使是那些刚接触Python生态系统的人,它也是一个相当简单直接的库。此代码是由活跃的志愿者社区编写的,具有高质量和同行评审的性质。

2.Numpy

Numpy是Python编程的核心库之一,并为数组提供支持。图像本质上是包含数据点像素的标准Numpy数组。因此,我们可以通过使用基本的NumPy操作,例如切片、掩膜和花式索引,来修改图像的像素值。可以使用skimage加载图像并使用matplotlib显示图像。

3.Scipy

scipy是Python的另一个类似Numpy的核心科学模块,可用于基本的图像操作和处理任务。特别是子模块scipy.ndimage,提供了在n维NumPy数组上操作的函数。该包目前包括线性和非线性滤波,二值形态学,B样条插值和对象测量等功能函数。

4. PIL/Pillow

PIL是Python编程语言的一个免费库,它支持打开、操作和保存许多不同的文件格式的图像。然而,随着2009年的最后一次发布,它的开发停滞不前。但幸运的是还有Pillow,一个PIL积极开发的且更容易安装的分支,它能运行在所有主要的操作系统,并支持Python3。这个库包含了基本的图像处理功能,包括点运算、使用一组内置卷积核的滤波和色彩空间的转换。

5.OpenCV-Python

OpenCV是计算机视觉应用中应用最广泛的库之一

。OpenCV-Python是OpenCV的python版API。OpenCV-Python的优点不只有高效,这源于它的内部组成是用C/C++编写的,而且它还容易编写和部署。这使得它成为执行计算密集型计算机视觉程序的一个很好的选择。