Sunny
Окт. 4, 2007 18:51:36
Люди, очень нужна помощь.
Мне нужно загрузить изображение(оттенки серого), перевести его в двумерный массив, обработать его и присвоить изображению и вывести результат. Никак не могу найти правильное решение. Плизз, может кто сталкивался с таким.
pythonwin
Окт. 4, 2007 20:13:11
в PIL можно так сделать, но правда как можно присвоить изображению масив не знаю
Sunny
Окт. 4, 2007 20:15:49
насчёт PIL я знаю, но вот только мне необходимо провести обработку контуров на изображении, а PIL мне информацию о них не выдаст, поэтому нужно перевести в массив чисел
Андрей Светлов
Окт. 4, 2007 23:58:11
Можно загрузить через PIL, перегнать в raw через tostring, затянуть это в numpy.ndarray, сделать что нужно, выгнать опять в raw и занянуть снова в PIL.Image. Сохранить.
Можно сделать из PIL.Image PIL.ImageDraw и работать попиксельно.
Первый способ - лучше
pythonwin
Окт. 5, 2007 07:56:26
Андрей Светлов
Можно загрузить через PIL, перегнать в raw через tostring, затянуть это в numpy.ndarray, сделать что нужно, выгнать опять в raw и занянуть снова в PIL.Image.
1) думаю ударит по качетву рисунка, хотя не уверен
2) + сильно ударит по ОЗУ, т.к. tostring для рисунка (jpg) в 1,5Мб дает строку в 40Мб
Александр Кошелев
Окт. 5, 2007 09:25:08
pythonwin
2) + сильно ударит по ОЗУ, т.к. tostring для рисунка (jpg) в 1,5Мб дает строку в 40Мб
это уже не проблемы питона, а самого jpg(хорошо сжимает)
ZAN
Окт. 5, 2007 10:35:52
Довольно несложно перегнать в массив файл в формате bmp, по большому счету - это и есть массив, только с заголовком. Только есть ли смысл работать с ним в чистом питоне, без си расширений - трудно сказать. Подозреваю, что поставленную задачу проще будет решать в gimp при помощи питоновского плагина.
pythonwin
Окт. 5, 2007 10:59:24
Daevaorn
это уже не проблемы питона, а самого jpg(хорошо сжимает)
bmp из jpg файла = 1,5Мб будет примерно 10-15Мб, т.е. меньше в 3-4 раза чем возвращает tostring
bialix
Окт. 5, 2007 11:26:52
tostring возвращает чистые байты. поэтому результат tostring должен быть даже меньше чем bmp.
очевидно вы сохраняете в bmp с включенной rle-компрессией
Андрей Светлов
Окт. 5, 2007 14:24:48
Мы говорим о форматах файлов или об обработке картинки?
Если грузишь jpeg - он все равно разворачивается в памяти в чистый raw.
О потере качества: если это тот же jpeg - качество теряется на каждом преобразовании.
Если серый tiff (а у Sunny, похоже, этот случай) - потери не будет.
P.S. Ох уж эти вебовщики, знания о картинке ограничиваются способом сделать ее в минимальном размере на диске!