【问题标题】:Most efficient method for reading/writing image files as numpy array将图像文件读/写为 numpy 数组的最有效方法
【发布时间】:2025-11-24 07:55:01
【问题描述】:

我想知道将图像和 PDF 文件作为 numpy 数组进行处理的最有效方法是什么。

到目前为止,我已经看到 scipy.ndimage.imread 并使用 PIL 和 numpy,得到以下结果:

import os
import glob
from scipy.ndimage import imread
from PIL import Image
import numpy as np
import timeit
iters = 2
def scipy_fun():
    for x in glob.glob("*.jpg"):
        px = imread(x)
def PIL_fun():
    for x in glob.glob("*.jpg"):
        with Image.open(x) as im:
            px = np.array(im)

print(timeit.Timer(scipy_fun).timeit(number=iters))
print(timeit.Timer(PIL_fun).timeit(number=iters))

运行脚本显示了类似的结果,但 scipy 略好:

2.8794324089019234
3.0174482765699095

有没有更快的方法来做到这一点?

【问题讨论】:

  • 您可以尝试的另一个库是imageio
  • 谢谢! imageio 似乎是一个非常好的库。输出为scipy: ~4 secs imageio: ~3 secs PIL: ~4 secs

标签: python performance numpy scipy python-imaging-library


【解决方案1】:

首先,这样做

pip install pdf2image

那么,

import numpy as np
from pdf2image import convert_from_path as read
import PIL
import cv2
#pdf in the form of numpy array to play around with in OpenCV or PIL
img = np.asarray(read('path to the pdf file')[0])#first page of pdf

【讨论】:

  • 这种方法比先保存img然后使用opencv读取它要顺畅得多,效率要高得多,做得很好Ali桑托什