Обработка изображений в 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



6

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


9
Вы когда-либо пользовались Google, прежде чем задать этот вопрос? :-) Я не говорю, что вам следует , просто кажется немного забавным ответить на свой вопрос менее чем за минуту.
Александра Фрэнкс,

5
Вся идея этого сайта состоит в том, чтобы предоставить пары (вопрос, ответ), которые будут служить полезной информацией для тех, кто ищет по этой теме. Приветствуется, что, если вы обнаружите что-то полезное, о котором раньше не знали, а этого еще нет на сайте, вы поделитесь этим с StackOverflow.
akdom

8
Из FAQ: Также совершенно нормально задать свой вопрос по программированию и ответить на него, но представьте, что вы находитесь в режиме Jeopardy: сформулируйте его в форме вопроса. Хотя я думаю, что на этот вопрос может легко ответить любой, кто в этом нуждается, с помощью поиска в Google ...
Мартин В.

5
@MartinW - Я нашел этот вопрос через поиск в Google
Bulwersator


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.