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

81

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

акдом
источник
4
Обработка изображений в реальном времени с использованием PyPy: morepypy.blogspot.com/2011/07/…
Михаил

Ответы:

53

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

Джим
источник
7
Я думаю, у вас есть это обратное: PIL предоставляет только самые базовые функции barebone-версии, но он прекрасно интегрируется с графическими интерфейсами Python. IM намного более полнофункциональный, но требует некоторой ручной работы с буферами обмена туда и обратно для интеграции с графическим интерфейсом.
SilverbackNet
19
Скажем так, грустно, но PIL кажется ненужным, и он даже не загружает файлы BMP, созданные с помощью Paint. Если вы заглянете на веб-страницу проекта, вы поймете это, поищите трекер ошибок (нет), активность в списке рассылки, SCM, ...
Сорин
19
Pillow - это ответвление PIL, которое поддерживается и развивается. Возможно, лучше использовать его.
Дэвид Джонстон
46

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

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

Луиспедро
источник
«Scikits.image SciKit (набор инструментов для SciPy) расширяет scipy.ndimage, чтобы предоставить универсальный набор процедур обработки изображений». Интересно, почему они не внесли прямой вклад в ndimage.
endolith
1
Все эти пакеты имеют разную внутреннюю структуру. Хотя, по крайней мере, мой пакет mahotas взял много кода из ndimage.
luispedro
scikit-imageтеперь размещается на scikit-image.org
Stefan van der Walt
Благодарю.
Обновил
scipy.ndimageссылка мертва. Текущая ссылка, скорее всего: scipy.github.io/devdocs/tutorial/ndimage.html
kmonsoor
19

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

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

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

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

сграхэм
источник
6

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

акдом
источник
9
Вы когда-либо пользовались Google, прежде чем задать этот вопрос? :-) Я не говорю, что вам следует , просто кажется немного забавным ответить на свой вопрос менее чем за минуту.
Александра Фрэнкс,
5
Вся идея этого сайта состоит в том, чтобы предоставить пары (вопрос, ответ), которые будут служить полезной информацией для тех, кто ищет по этой теме. Приветствуется, что, если вы обнаружите что-то полезное, о котором раньше не знали, а этого еще нет на сайте, вы поделитесь этим с StackOverflow.
akdom
8
Из FAQ: Также совершенно нормально задать свой вопрос по программированию и ответить на него, но представьте, что вы находитесь в режиме Jeopardy: сформулируйте его в форме вопроса. Хотя я думаю, что на этот вопрос может легко ответить любой, кто в этом нуждается, с помощью поиска в Google ...
Мартин В.
5
@MartinW - Я нашел этот вопрос через поиск в Google
Bulwersator
4

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

расплавленная форма
источник