相关疑难解决方法(0)

将数千个图像读入一个大的numpy数组的最快方法

我正在尝试找到一种最快的方法来从目录中读取一堆图像到一个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)
  1. 附加到列表

    %%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)
  2. 使用字典

    %%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)

python performance numpy image

19
推荐指数
2
解决办法
1万
查看次数

标签 统计

image ×1

numpy ×1

performance ×1

python ×1