图像到阵列:普通英语

时间:2016-09-20 19:19:38

标签: python arrays python-2.7 numpy pillow

我开始使用numpy和PILlow来处理图像文件。而且,在将图像转换为数组,然后使用数组时,通常会失去自己。 有人可以解释当我将图像转换为数组时发生的事情。比如这个:

ab = numpy.asarray(img.convert('L'))

而且,为什么要转换为数组呢?这提供了什么功能,我可以用数组做什么?

由于

1 个答案:

答案 0 :(得分:2)

什么是数码影像?

数字图像是一组像素值。请考虑以下图片:small smiley face。它由16x16像素组成。由于大多数显示器具有8位(2 ^ 8(256)个可能值)和3个通道(红色,绿色和蓝色),因此它包含一个介于0到255之间的16x16x3数字数组。

微笑的数字图像已经由数字组成。当您使用PIL.Image加载它然后转换为numpy数组时,您所做的就是将数字暴露给numpy。 convert('L')调用要求PIL将彩色图像(3个通道)转换为 L uminance或灰度(1通道)图像。因此,它不是作为16x16x3矩阵暴露于numpy,而是暴露为16x16x1阵列。

数字图像中的数字并没有什么特别之处。实际上,以下是构成上述数字图像的数字:

255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255   6   6   6   6   6   6   6 255 255 255 255
255 255 255   6   6   6   6   6   6   6   6   6   6 255 255 255
255 255   6   6   6 130 255 255 255 255 255   6   6   6 255 255
255 255   6   6 255 255 255 255 255 255 255 255   6   6   6 255
255   6   6  68 255 255 255 255 255 255 255 255 255   6   6 255
255   6   6 255 255   6 161 255 255 255   6   6 255  84   6   6
255   6   6 255  68   6   6 255 255 255   6   6 255 255   6   6
255   6   6 255 255   6 255 255 255 255   6 115 255 255   6   6
255   6   6 255 255 255 255 255 255 255 255 255 255 224   6   6
255   6   6 255 255   6   6   6   6   6   6 255 255   6   6 176
255 130   6   6 255 255   6   6   6   6  84 255 239   6   6 255
255 255   6   6   6 255 255 255 255 255 255 208   6   6 176 255
255 255 255   6   6   6   6 239 255 115   6   6   6   6 255 255
255 255 255 255   6   6   6   6   6   6   6   6 224 255 255 255
255 255 255 255 255 255 115   6   6   6 255 255 255 255 255 255

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

我不知道Pillow的功能是什么,但我猜想numpy的数值/统计/定量功能比Pillow的功能强大得多。一旦你将图像中的数字暴露给numpy,你就可以做各种很酷的事情,比如找到它的平均亮度或方差(ab_mean = numpy.mean(ab)ab_var = numpy.var(ab)),FFT它(ab_fft = numpy.fft.fft2(ab))或转置它(ab_transposed = ab.T):small transposed smiley face