Обработка изображений в Python?

Недавно я столкнулся с проблемой, которая требует хотя бы базовой степени обработки изображений, могу ли я сделать это в Python, и если да, то с помощью чего?


person akdom    schedule 18.09.2008    source источник
comment
Обработка изображений в реальном времени с использованием PyPy: morepypy.blogspot.com/ 2011/07/   -  person Mikhail    schedule 15.10.2011


Ответы (8)


Самая известная библиотека — PIL. Однако, если вы просто выполняете базовые манипуляции, вам, вероятно, лучше использовать привязки Python для ImageMagick, что будет намного эффективнее, чем написание преобразований на Python.

person Jim    schedule 18.09.2008
comment
Я думаю, что у вас есть это задом наперед: PIL предоставляет только самую базовую базовую функциональность, но он прекрасно интегрируется с графическим интерфейсом Python. IM гораздо более полнофункционален, но требует некоторой ручной работы с обменом буферов туда и обратно для интеграции с графическим интерфейсом. - person SilverbackNet; 10.08.2011
comment
Скажем так, грустно, но PIL кажется заброшенным, и он даже не загружает BMP-файлы, созданные с помощью Paint. Если вы проверите веб-страницу проекта, вы поймете это, поищите трекер ошибок (нет), активность списка рассылки, SCM, ... - person sorin; 03.10.2011
comment
Pillow — это ответвление PIL, которое поддерживается и развивается. Вместо этого, вероятно, лучше использовать его. - person David Johnstone; 06.09.2013

В зависимости от того, что вы подразумеваете под «обработкой изображений», лучшим выбором могут быть библиотеки на основе numpy: mahotas , scikits.image или scipy.ndimage. Все они работают на основе массивов numpy, поэтому вы можете смешивать и сопоставлять функции из одной библиотеки и другой.

Я запустил веб-сайт http://pythonvision.org, на котором есть дополнительная информация об этом.

person luispedro    schedule 22.04.2011
comment
scikits.image SciKit (набор инструментов для SciPy) расширяет scipy.ndimage, предоставляя универсальный набор процедур обработки изображений. Интересно, почему они просто не внесли непосредственный вклад в ndimage. - person endolith; 23.11.2011
comment
Все эти пакеты имеют разную внутреннюю структуру. По крайней мере, мой пакет, mahotas, взял много кода из ndimage. - person luispedro; 25.11.2011
comment
scikit-image теперь размещен на scikit-image.org - person Stefan van der Walt; 27.02.2013
comment
Спасибо. Обновлен мой ответ - person luispedro; 27.02.2013
comment
scipy.ndimage ссылка не работает. Текущая ссылка, скорее всего: scipy.github.io/devdocs/tutorial/ndimage.html< /а> - person kmonsoor; 07.02.2016

У вас также есть подход к обработке изображений, основанный на «стандартных» научных модулях: SciPy имеет целый пакет, предназначенный для обработки изображений: scipy.ndimage. Фактически Scipy представляет собой стандартный пакет общих численных расчетов; он основан на де-факто стандартном модуле управления массивом NumPy: изображения также можно обрабатывать как массив чисел. Что касается отображения изображений, Matplotlib (также часть "научной трилогии") позволяет отображать изображения довольно просто.

SciPy по-прежнему активно поддерживается, так что это хорошая инвестиция в будущее. Кроме того, SciPy в настоящее время также работает с Python 3, а Python Imaging Library (PIL) — нет.

person Eric O Lebigot    schedule 05.05.2010
comment
Для справки в будущем, ndimage все равно требует PIL. - person davidtbernal; 20.11.2011
comment
@notJim: не так ли? PIL не указан в зависимостях SciPy от MacPorts, и я могу выполнить import scipy без установки PIL (import Image не удается с ImportError). - person Eric O Lebigot; 20.11.2011
comment
Да, когда я пытался прочитать изображение с помощью ImRead, я получил сообщение об ошибке «raise ImportError (Не удалось импортировать библиотеку изображений Python (PIL)» - person davidtbernal; 20.11.2011
comment
@notJim: Это правда, что SciPy полагается на PIL для чтения изображений (я пробовал с простым файлом JPEG, и это не удалось, как и в вашем примере). SciPy по-прежнему может выполнять обработку изображений без PIL (PIL является необязательной зависимостью). - person Eric O Lebigot; 20.11.2011

Чтобы завершить список: opencv http://opencv.willowgarage.com/documentation/python/index.html

person Piti Ongmongkolkul    schedule 28.09.2011
comment
OpenCV теперь находится на opencv.org - person Nianliang; 19.07.2013

Существует также pycairo, который может быть более подходящим в зависимости от ваших потребностей.

person sgraham    schedule 29.11.2009

На самом деле существует замечательная библиотека изображений Python (PIL). Это дает вам возможность изменять существующие изображения, включая возможности сглаживания, и создавать новые изображения с текстом и т. д. Вы также можете найти приличное вводное руководство в руководстве по PIL на вышеупомянутом сайте.

person akdom    schedule 18.09.2008
comment
Вы использовали Google вообще, прежде чем задать этот вопрос? :-) Я не говорю, что вы должны, просто кажется немного забавным отвечать на свой вопрос менее чем за минуту. - person Alexandra Franks; 18.09.2008
comment
Вся идея этого сайта состоит в том, чтобы предоставить пары (вопрос, ответ), которые послужат полезной информацией для тех, кто ищет по теме. Рекомендуется, если вы обнаружите что-то полезное, о чем вы не знали раньше, и этого еще нет на сайте, вы поделитесь этим со StackOverflow. - person akdom; 18.09.2008
comment
Из часто задаваемых вопросов: также совершенно нормально задать и ответить на свой собственный вопрос по программированию, но представьте, что вы находитесь в Jeopardy: сформулируйте его в форме вопроса. Хотя, я думаю, что любой нуждающийся может легко ответить на этот вопрос через поиск в Google... - person Martin W; 18.09.2008
comment
@MartinW - я нашел этот вопрос через поиск Google - person Bulwersator; 18.11.2013

Если вы создаете собственный эффект обработки изображений, вам может пригодиться PythonPixels. http://halfhourhacks.blogspot.com/2008/03/pythonpixels.html Он предназначен для написания и экспериментов с обработкой изображений.

person moltenform    schedule 19.09.2008

VIPS должен быть быстрым и использовать несколько процессоров:

https://github.com/libvips/libvips/wiki/Speed-and-memory-use

person guettli    schedule 10.10.2011