8个常用的Python图像操作库
文章目录
- 8个常用的Python图像操作库
- 1、OpenCV
- 2、Pillow(PIL)
- 3、Scikit Image
- 4、Numpy
- 5、SciPy
- 6、Mahotas
- 7、SimpleITK
- 8、Matplotlib
在当今世界,数据在每个行业垂直领域中都发挥着至关重要的作用。图像可以是提取数据的来源之一。图像可以定义为像素矩阵,每个像素代表一种颜色,这种颜色可以被视为一个数据值。
图像处理有助于揭示任何图像中的底层数据。它帮助您从图像中提取、操作和过滤数据。图像处理的主要目标是从图像中发现一些有价值的信息。
图像处理有各种应用,如图像锐化、图像恢复、模式识别、视频处理等。大多数图像处理应用都属于数据分析和数据科学领域。
说到数据分析,我们脑海中浮现的唯一语言就是Python。它也是最常用于图像处理的语言,因为它拥有广泛的库集,这使得开发人员能够使用简单的代码行执行复杂操作。
让我们来看一些主要用于图像处理的Python库。
1、OpenCV
OpenCV(开源计算机视觉库)是一个流行的Python数据可视化库。它是一个开源库,适用于多种编程语言,包括C++、Java以及汇编语言。
这个库是由英特尔使用C++编程语言开发的,旨在用于实时计算机视觉。它非常适合执行计算密集型的计算机视觉程序。
1)安装
由于OpenCV是一个第三方库,我们可以使用Python的pip包管理器工具为我们的Python环境安装它。
pip install opencv-python
2)使用示例:
# import opencv
import cv2
# Read the image
image = cv2.imread('tesla.png')
# grayscale the image
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
cv2.imshow('Original Image', image)
cv2.imshow('Grayscale Image', gray_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
输出结果如下:
2、Pillow(PIL)
Pillow是另一个流行的Python图像处理库。它是每个初学者都可以开始使用的最基本的图像处理库。它也被称为PIL,代表Python Imaging Library(Python成像库)。
PIL库附带了不同的文件格式化扩展名,这些扩展名提供了强大而复杂的功能来执行图像处理。如果我们将PIL与OpenCV进行比较,PIL是一个轻量级库,功能较少,使得它对刚刚进入图像处理领域的新Python开发者来说易于学习和操作。
1)安装
PIL也是一个第三方开源库,可以使用pip install命令进行安装。
pip install pillow
2)示例
下面将图像转换为灰度图像:
from PIL import Image
with Image.open("tesla.png") as im:
#show the original image
im.show("Original Image")
#convert into grayscale
grayscaleImg = im.convert("L")
#show the grayscale image
grayscaleImg.show()
输出结果如下:
3、Scikit Image
Scikit Images是一个科学倾向的Python图像处理库。它旨在使用Numpy和Scipy库处理图像。它包括各种科学算法,如分割、颜色空间操作、分析、形态学等。这个库是用Python和C编程语言编写的。它适用于所有流行的操作系统,如Linux、macOS和Windows。
1)安装
scikit-image是一个开源库,我们可以使用pip install命令进行安装。
pip install scikit-image
2)示例
from skimage import io
from skimage.color import rgb2gray
# way to load car image from file
car = io.imread('tesla.png')[:,:,:3]
#convert into grayscale
grayscale = rgb2gray(car)
#show the original
io.imshow(car)
io.show()
#show the grayscale
io.imshow(grayscale)
io.show()
输出结果如下:
4、Numpy
NumPy是最基本的Python科学计算库。它因在Python中引入多维数组或矩阵而闻名。它是一个专门的科学计算库。此外,它还具有广泛的数学功能,如数组、线性代数、基本统计操作、随机模拟、逻辑排序、搜索、形状操作等。
1)安装
同样,要安装NumPy,我们可以使用pip install命令。
pip install numpy
2)示例
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
#load the original image
img_rgb = mpimg.imread('tesla.png')[...,:3]
#show the original image
plt.imshow(img_rgb)
plt.show()
#convert the image into grayscale
img_gray = np.dot(img_rgb,[0.299, 0.587, 0.144])
#show the grayscale image
plt.imshow(img_gray, cmap=plt.get_cmap('gray'))
plt.show()
输出结果如下:
5、SciPy
类似于NumPy,SciPy也是一个科学计算库。它拥有比NumPy更多的功能,因为它是作为NumPy库的扩展而构建的。
Scipy为数据操作和数据可视化提供了高级和复杂的命令和类。它涵盖了广泛的数据处理工具。此外,它还支持并行编程、从网络获取数据、数据驱动的子程序以及其他数学功能。
1)安装
要安装SciPy库,我们可以借助Python包管理器命令行工具pip。
pip install scipy
2)示例
from scipy import misc,ndimage
from matplotlib import pyplot as plt
import numpy as np
img=misc.face()
#show original image
plt.imshow(img)
plt.show()
#grayscale using gaussian blur filter
grayscale=ndimage.gaussian_filter(img,sigma=2)
#show grayscale image
plt.imshow(grayscale)
plt.show()
输出结果如下:
6、Mahotas
Mahotas是另一个可以进行各种图像处理操作的Python计算机视觉库。它是用C++设计的,包括许多算法来提高图像处理速度。此外,它使用NumPy数组将图像表示为矩阵。Watershed、凸点计算、命中与未命中卷积以及Sobel边缘是该库中的主要功能。
1)安装
Mahotas是一个开源库,可以使用以下终端命令进行安装。
pip install mahotas
2)示例
import mahotas
from pylab import imshow, show
#read the image
img = mahotas.imread('tesla.png')
#show original image
imshow(img)
show()
img = img[:, :, 0]
grayscale = mahotas.overlay(img)
#show grayscale image
imshow(grayscale)
show()
输出结果如下:
7、SimpleITK
SimpleITK是一个强大的图像配准和分割工具包。它是作为ITK工具包的扩展而构建的,旨在提供简化的界面。它支持多种编程语言,如Python、R、C++、Java、C#、Ruby、TCL和Lua。
该库支持2D、3D和4D图像。与其他Python图像处理库和框架相比,该库的图像处理速度非常快。
1)安装
pip install SimpleITK
2)示例
import SimpleITK as sitk
import matplotlib.pyplot as plt
logo = sitk.ReadImage('tesla.png')
# GetArrayViewFromImage returns an immutable numpy array view to the data.
plt.imshow(sitk.GetArrayViewFromImage(logo))
plt.show()
输出结果如下:
8、Matplotlib
尽管Matplotlib是一个数据可视化库,但它也可以用作图像处理库。它通常用于绘制由NumPy数组表示的数据,但也可以读取NumPy数组表示的图像数据。在上面的库中,我们已经使用过Matplotlib库来显示和绘制图像。
1)安装
pip install matplotlib
2)示例
# importing libraries.
import matplotlib.pyplot as plt
from PIL import Image
# open image using pillow library
image = Image.open("tesla.png")
#show original image
plt.imshow(image)
plt.show()
# grayscale the image
plt.imshow(image.convert("L"), cmap='gray')
plt.show()
输出结果: