Ошибка памяти при преобразовании большого изображения RGB в оттенки серого - PullRequest
0 голосов
/ 01 октября 2018

Я пытаюсь загрузить оригинальные цветные изображения глазного дна на python для какого-то учебного проекта.Это RGB изображения размером ок.4000 *2000* 3.Я хочу преобразовать каждое изображение в градации серого, прежде чем отправлять их на обучение в мою модель.Для этого я попробовал следующие 2 подхода:

Метод 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 Error в строках gray = rgb2gray(img) и gray = img.convert('L') соответственно.

Можно ли как-то преобразовать такие большие изображения в оттенки серого по одному исохранить его как список?

1 Ответ

0 голосов
/ 02 октября 2018

Оказывается, проблема не в командах, а в размере моих данных.Как правильно указал @ user894763, мой размер данных составляет до 10 ГБ, что является причиной ошибки памяти.

...