python 中的图像数组
Array of images in python
我正在使用 numpy 和 matplotlib 在 python 中导入图像。我想创建一个 3d 数组,这样在第 1 轴和第 2 轴我有像素值,在第 0 轴我有图像编号。到目前为止,我得到了这样的东西:
from PIL import Image
import numpy
import matplotlib.pyplot as plt
import glob
imageFolderPath = '/home/B/Pictures/'
imagePath = glob.glob(imageFolderPath+'/*.JPG')
im_array = numpy.array(Image.open(imagePath[0]).convert('L'), 'f')
im_array = numpy.expand_dims(im_array, axis=0)
for c in range(1, len(imagePath)):
im_array_new = numpy.array(Image.open(imagePath[c]).convert('L'), 'f')
im_array_new = numpy.expand_dims(im_array_new, axis=0)
im_array = numpy.append(im_array, im_array_new, axis=0)
这项工作,但有点难看。我不喜欢我必须扩展二维数组的维度然后将它们附加在一起的事实。
在 python 中有更优雅的方法吗?可能无需预先分配一个巨大的 3d 数组(n 张照片,x 维度,y 维度)
您可以从列表推导中创建一个数组,而不是 for 循环:
from PIL import Image
import numpy
import glob
imageFolderPath = '/home/B/Pictures/'
imagePath = glob.glob(imageFolderPath + '/*.JPG')
im_array = numpy.array( [numpy.array(Image.open(img).convert('L'), 'f') for img in imagePath] )
我正在使用 numpy 和 matplotlib 在 python 中导入图像。我想创建一个 3d 数组,这样在第 1 轴和第 2 轴我有像素值,在第 0 轴我有图像编号。到目前为止,我得到了这样的东西:
from PIL import Image
import numpy
import matplotlib.pyplot as plt
import glob
imageFolderPath = '/home/B/Pictures/'
imagePath = glob.glob(imageFolderPath+'/*.JPG')
im_array = numpy.array(Image.open(imagePath[0]).convert('L'), 'f')
im_array = numpy.expand_dims(im_array, axis=0)
for c in range(1, len(imagePath)):
im_array_new = numpy.array(Image.open(imagePath[c]).convert('L'), 'f')
im_array_new = numpy.expand_dims(im_array_new, axis=0)
im_array = numpy.append(im_array, im_array_new, axis=0)
这项工作,但有点难看。我不喜欢我必须扩展二维数组的维度然后将它们附加在一起的事实。 在 python 中有更优雅的方法吗?可能无需预先分配一个巨大的 3d 数组(n 张照片,x 维度,y 维度)
您可以从列表推导中创建一个数组,而不是 for 循环:
from PIL import Image
import numpy
import glob
imageFolderPath = '/home/B/Pictures/'
imagePath = glob.glob(imageFolderPath + '/*.JPG')
im_array = numpy.array( [numpy.array(Image.open(img).convert('L'), 'f') for img in imagePath] )