python - 将图像转换为 numpy 数组需要什么?
问题描述
我正在观看有关使用 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 数组。