Python 批处理:读取图像文件,然后将多维numpy数组写入HDFS
我尝试从文件夹中迭代加载一批图像,然后处理,然后将批处理结果存储到hdf文件中。批量读取图像/文件并批量存储生成的多维数组的最佳做法是什么 第一部分 我从csv文件名列表开始:Python 批处理:读取图像文件,然后将多维numpy数组写入HDFS,python,pandas,numpy,hdfs,batch-processing,Python,Pandas,Numpy,Hdfs,Batch Processing,我尝试从文件夹中迭代加载一批图像,然后处理,然后将批处理结果存储到hdf文件中。批量读取图像/文件并批量存储生成的多维数组的最佳做法是什么 第一部分 我从csv文件名列表开始: file_list = [''.join(x) + '.png' for x in permutations('abcde')][:100] 例如,我想一次处理5张图像 我目前从列表中获取5个文件名,创建一个空数组来保存5个图像,然后一次读取一个图像以生成一个批 def load_images(file_list):
file_list = [''.join(x) + '.png' for x in permutations('abcde')][:100]
例如,我想一次处理5张图像
我目前从列表中获取5个文件名,创建一个空数组来保存5个图像,然后一次读取一个图像以生成一个批
def load_images(file_list):
for i in range(0, 100, 5):
files_list = file_list[i, i + 5]
image_list = np.zeros(shape=(5, 50, 50, 3))
for idx, file in enumerate(files_list):
loaded_img = np.random.random((50, 50, 3)) # misc.imread(file)
image_list[idx] = loaded_img
yield image_list, files_list
问题1:有没有办法消除第二个for循环?我是否可以批量读取图像,或者上述方法(一次一个)是最佳实践
第二部分:
加载图像后,我对它们进行了一些处理。这将导致不同大小的数组
def process_images(image_batch):
result = image_batch[:, 5, 4, 3] # a novel down-sampling algorithm
return result
现在,我想用原始文件名存储这批图像
def store_images(data, file_names):
with pd.HDFstore('output.h5') as hdf:
pass
问题2:存储一批多维numpy数组的最佳方式是什么,同时仍使用键(如原始文件名)引用它们
我想探索如何使用.h5文件,因此如果有人知道如何将数据批处理到.h5文件,并对此提出建议,我将不胜感激。或者,我认为有一种方法可以将numpy数组作为.npy文件保存到一个文件夹中,但我在这方面遇到了问题,除了一次一个样本(相对于一次一批样本)之外,我仍然不知道如何执行此操作