繁体   English   中英

将图像转换为numpy数组有什么需要?

[英]What is the need of converting an image into numpy array?

我正在观看有关使用OpenCV,numpy,PIL进行的面部识别项目的教程。 在训练期间,将图像转换为numpy数组,将其转换为numpy数组有什么需要?

编码:

PIL_IMAGE = Image.open(path).convert("L")
image_array = np.array(PIL_IMAGE, "uint8")

TLDR; OpenCV图像存储为三维Numpy数组。

使用库读取数字图像时,它们表示为Numpy数组。 阵列的矩形形状对应于图像的形状。 考虑这张椅子的图片

在此处输入图片说明

这是该图像如何在OpenCV中作为Numpy数组存储的可视化

在此处输入图片说明

如果我们阅读椅子的图像,我们可以看到它的image.shape结构如何返回元组(height, width, channels) 如果它是彩色图像,则图像属性将是行,列和通道数的元组。 如果是灰度图像,则image.shape仅返回行数和列数。

import cv2

image = cv2.imread("chair.jpg")
print(image.shape)

(222,300,3)

使用OpenCV图像时,我们首先指定y坐标,然后指定x坐标。 颜色存储为BGR值,第0层为蓝色,第1层为绿色,第2层为红色。因此,对于此椅子图像,其高度为222,宽度为300,并具有3个通道(这意味着它是彩色图像)。 本质上,当库读取任何图像时,它将以这种格式将其存储为Numpy数组。

答案很简单:

使用Numpy,无论它们是什么尺寸,形状等等,您都可以对数字数组进行快速的操作。

图像处理库(OpenCV,PIL,scikit-image)有时会以某些特殊格式包装图像,这些特殊格式已经在后台使用了Numpy。 如果它们尚未在后台使用Numpy,则可以将图像显式转换为Numpy数组。 然后,您可以对其进行快速的数值计算(卷积,FFT,模糊,滤波器等)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM