Я пытаюсь создать программу python, которая принимает полутоновый, 24 * 24-пиксельный файл изображения (я не решил тип, поэтому предложения приветствуются) и преобразует его в список значений пикселей от 0 (белый) до 255 (черный).Как преобразовать изображение в оттенках серого в список значений пикселей?
Я планирую использовать этот массив для создания байтового файла изображения MNIST, который может быть распознан алгоритмами распознавания рукописного ввода Tensor-Flow.
Я нашел Pillow library, чтобы быть наиболее полезными в решении этой задачи, путем перебора каждого пикселя и добавления его значение в массиве от PIL импорта изображения
img = Image.open('eggs.png').convert('1')
rawData = img.load()
data = []
for y in range(24):
for x in range(24):
data.append(rawData[x,y])
Однако это решение имеет две задачи (1) Значения пикселей не сохраняются как целые числа, а пиксельные объекты, которые не могут быть подвергнуты математическому манипулированию и поэтому бесполезны. (2) Даже Pillow docs заявляют, что:
Доступ к отдельным пикселям довольно медленный. Если вы перебираете все пиксели в изображении, скорее всего, более быстрый способ использования других частей> Pillow API.
Когда я запускаю свой код на своей машине, 'data' представляет собой список регулярных целых чисел. – Kevin
Документация может ссылаться на [getdata] (https://pillow.readthedocs.io/en/3.4.x/reference/Image.html#PIL.Image.Image.getdata), который, как я ожидаю, быстрее, чем доступ на один пиксель. – Kevin
Я не знаю ни одной библиотеки Python, которая не замедляет доступ к отдельным пикселям. – Douglas