我正在尝试找到一种最快的方法来从目录中读取一堆图像到一个numpy数组.我的最终目标是计算所有这些图像中像素的最大值,最小值和第n百分位数等统计数据.当所有图像中的像素都在一个大的numpy数组中时,这是直截了当的,因为我可以使用内置的数组方法,如.max和.min,以及np.percentile函数.
下面是一些具有25个tiff图像(512x512像素)的示例时序.这些基准测试来自%%timit于jupyter-notebook中的使用.差异太小,不足以对25张图片产生任何实际影响,但我打算将来阅读数千张图片.
# Imports
import os
import skimage.io as io
import numpy as np
Run Code Online (Sandbox Code Playgroud)
附加到列表
%%timeit
imgs = []
img_path = '/path/to/imgs/'
for img in os.listdir(img_path):
imgs.append(io.imread(os.path.join(img_path, img)))
## 32.2 ms ± 355 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
Run Code Online (Sandbox Code Playgroud)使用字典
%%timeit
imgs = {}
img_path = '/path/to/imgs/'
for img in os.listdir(img_path):
imgs[num] = io.imread(os.path.join(img_path, img))
## 33.3 ms ± 402 ms per loop (mean ± …Run Code Online (Sandbox Code Playgroud)