如何将多个图像加载到一个numpy数组中?

2024-06-28 20:01:45 发布

您现在位置:Python中文网/ 问答频道 /正文

如何在一个numpy数组的目录中加载多个图像的像素。我在numpy数组中加载了一个图像。但不知道如何从一个目录加载多个图像。这是我到目前为止所做的

image = Image.open('bn4.bmp')
nparray=np.array(image)

这将加载32*32矩阵。我想在一个numpy数组中加载100个图像。我想制作100*32*32大小的numpy数组。我该怎么做?我知道结构会像这样

for filename in listdir("BengaliBMPConvert"):
  if filename.endswith(".bmp"):
       -----------------
  else:
       continue

但无法找到如何加载numpy数组中的图像


Tags: 图像imagenumpy目录np矩阵像素数组
3条回答

我只想共享两个站点,其中一个站点可以将数据集拆分为训练集、测试集和验证集:split_folder 通过muskulpesent从位于各自文件夹中的图像创建numpy数组code snippet from medium

获取BMP文件列表

要从目录BengaliBMPConvert获取BMP文件列表,请使用:

import glob
filelist = glob.glob('BengaliBMPConvert/*.bmp')

另一方面,如果您已经知道文件名,只需将它们按顺序排列:

filelist = 'file1.bmp', 'file2.bmp', 'file3.bmp'

将所有图像合并为一个numpy数组

要将所有图像合并为一个数组,请执行以下操作:

x = np.array([np.array(Image.open(fname)) for fname in filelist])

对核阵列进行酸洗

要使用pickle将numpy数组保存到文件:

import pickle
pickle.dump( x, filehandle, protocol=2 )

其中,x是要保存的numpy数组,filehandle是pickle文件(如open('filename.p', 'wb'))的句柄,protocol=2告诉pickle使用其当前格式,而不是一些过时的旧格式。

或者,可以使用numpy提供的方法对numpy数组进行pickle(hat tip:tegan)。要在文件file.npy中转储数组x,请使用:

x.dump('file.npy')

要从文件中重新加载数组x

x = np.load('file.npy')

有关更多信息,请参阅dumpload的numpy文档。

将OpenCV的imread()函数与os.listdir()一起使用,比如

import numpy as np
import cv2
import os

instances = []

# Load in the images
for filepath in os.listdir('images/'):
    instances.append(cv2.imread('images/{0}'.format(filepath),0))

print(type(instances[0]))

class 'numpy.ndarray'

这将返回一个列表(=instances),其中存储图像的所有灰度值。对于彩色图像,只需设置.format(filepath),1

相关问题 更多 >