内存错误将大RGB图像转换为灰度

时间:2018-10-01 15:17:26

标签: python python-imaging-library rgb grayscale

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

方法1:

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

方法2:

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

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

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

1 个答案:

答案 0 :(得分:0)

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