首页 > 解决方案 > 将图像转换为 numpy 数组需要什么?

问题描述

我正在观看有关使用 OpenCV、numpy、PIL 的面部识别项目的教程。在训练过程中,图像被转换成一个numpy数组,需要将它转换成一个numpy数组吗?

编码:

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

标签: pythonimagenumpyopencvpython-imaging-library

解决方案


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 数组。


推荐阅读