[英]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.