如何在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数组中加载图像
答案 0 :(得分:19)
要从目录BengaliBMPConvert
获取BMP文件列表,请使用:
import glob
filelist = glob.glob('BengaliBMPConvert/*.bmp')
另一方面,如果您已经知道文件名,只需将它们按顺序放置:
filelist = 'file1.bmp', 'file2.bmp', 'file3.bmp'
将所有图像合并为一个数组:
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提供的方法(帽子提示:tegan)来腌制numpy数组。要在文件x
中转储数组file.npy
,请使用:
x.dump('file.npy')
从文件中重新加载数组x
:
x = np.load('file.npy')
答案 1 :(得分:1)
将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]))
类'numpy.ndarray'
这将返回一个列表(== {instances
),其中存储了图像的所有灰度值。对于彩色图像,只需设置.format(filepath),1
。
答案 2 :(得分:0)
我只想分享两个可以将数据集分为训练集,测试集和验证集的站点:split_folder 并由 muskulpesent
从驻留在各个文件夹code snippet from medium 中的图像中创建numpy数组