将大型 RGB 图像转换为灰度图像时出现内存错误

Memory error converting large RGB image to grayscale

我正尝试在 python 中为某些学习项目加载原始彩色眼底图像。这些是大小约为 RGB 图像。 4000*2000*3。在将它们发送到我的模型中进行训练之前,我想将每个图像转换为灰度。为此,我尝试了以下两种方法:

方法一:

import matplotlib.image as mpimg

def rgb2gray(rgb):
    return np.dot(rgb[...,:3], [0.299, 0.587, 0.114])

def load_images(folder):
    images = []
    for filename in os.listdir(folder):
        img = mpimg.imread(os.path.join(folder, filename))
        gray = rgb2gray(img)
        images.append(gray)
    return images

方法二:

from PIL import Image

def load_images(folder):
    images = []
    for filename in os.listdir(folder):
        img = Image.open(os.path.join(folder, filename))
        gray = img.convert('L')
        images.append(gray)
    return images

在这两种方法中,我分别在第 gray = rgb2gray(img) 行和 gray = img.convert('L') 行得到相同的 Memory Error

有什么方法可以一次将这么大的图像转换为灰度图像并将其存储为列表?

事实证明,问题不在于命令,而在于我的数据大小。正如@user894763 正确指出的那样,我的数据大小高达 10 GB,这是内存错误的原因。