Импорт изображений PPM с помощью модуля Python и PIL - PullRequest
0 голосов
/ 05 ноября 2010

РЕДАКТИРОВАНИЕ: На самом деле мне нужен способ, которым я могу читать строки и извлекать информацию о пикселях в какую-то структуру, чтобы я мог использовать функцию putpixel для создания изображения на основе файла ppm p3.*

Я пытался это так долго, и я не могу просто сделать это правильно.

Я работаю с Python Imaging Library (PIL) и хочу открыть изображение PPM и показатьэто как изображение на экране.

Как я могу сделать это, используя только PIL?

Это мое изображение в миллион.это просто изображение 7x1, которое я создал.

P3
# size 7x1
7 1
255
0
0
0
201
24
24
24
201
45
24
54
201
201
24
182
24
201
178
104
59
14

Ответы [ 5 ]

5 голосов
/ 22 июня 2012

А если вам нравится работать с np.array объектами, просто сделайте это:

>>> from scipy.misc import imread
>>> img = imread(path_to_ppm_file)
>>> img.shape
>>> (234, 555, 3)
2 голосов
/ 05 ноября 2010

Прочитайте учебник: http://effbot.org/imagingbook/introduction.htm

Самый первый пример

>>> import Image
>>> im = Image.open("lena.ppm")
>>> im.show()
2 голосов
/ 05 ноября 2010

Редактировать: Немного больше информации имеет большое значение. Теперь, когда я вижу изображение, которое вы пытаетесь открыть вместе с точным сообщением об ошибке, я вспоминаю немного документированный факт о PIL и PPM - PIL не поддерживает версии ASCII, начиная с P1 / P2 / P3, только двоичный файл версии P4 / P5 / P6. Постскриптум Вам не хватает поля в вашем файле, должно быть 255 для максимального значения пикселя после ширины и высоты.


PPM указан как как поддерживаемый формат, вы должны иметь возможность открыть файл с Image.open('myfile.ppm').

Для отображения изображения требуется немного больше информации. Какую операционную систему вы используете и предпочитаете ли вы использовать оконные функции?

1 голос
/ 29 ноября 2010

edit: После того, как вы изменили свой вопрос и разрешили просто читать строки, проверьте ссылку ниже. Он объясняет, как написать оболочку, которая загружает файл. Я собираюсь проверить это сам, и это должно работать ...


В настоящее время (11/2010) вы не можете открывать простые изображения PPM с помощью PIL. Обычный здесь означает ASCII. Бинарные версии работают однако. Основная причина этого заключается в том, что файлы ascii не имеют постоянного числа бит на пиксель. И это то, что предполагает загрузчик изображений в PIL. У меня есть связанный вопрос по адресу:

Как написать фильтр изображений PIL для обычного формата pgm?

Я планирую написать PIL-фильтр для простых PPM, но у меня мало времени. Если вы заинтересованы в помощи, пожалуйста, дайте мне знать.

ш
Юха

1 голос
/ 07 ноября 2010

im = Image.open("lena.ppm")

Похоже, это не работает для P3 * .PPM, оно работает, если вы попробуете P6.

...