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






На самом деле есть замечательный Библиотека изображений Python (PIL). Это дает вам возможность изменять существующие изображения, включая возможности сглаживания, и создавать новые изображения с текстом и т. д. Вы также можете найти достойное вводное руководство в справочнике PIL, представленном на вышеупомянутом сайте.
Вы когда-нибудь пользовались Google, прежде чем задать этот вопрос? :-) Я не говорю, что вы должен, просто мне кажется немного забавным ответить на свой вопрос менее чем за минуту.
Вся идея этого сайта состоит в том, чтобы предоставить пары (вопрос, ответ), которые будут служить полезной информацией для тех, кто ищет по этой теме. Приветствуется, что если вы обнаружите что-то полезное, о котором раньше не знали, и этого еще нет на сайте, вы поделитесь этим с StackOverflow.
Из FAQ: Также совершенно нормально задать свой вопрос по программированию и ответить на него, но притвориться, что вы находитесь в режиме Jeopardy: сформулируйте его в форме вопроса. Хотя я думаю, что на этот вопрос может легко ответить любой, кто в этом нуждается, с помощью поиска в Google ...
@MartinW - Я нашел этот вопрос через поиск Google
Самая известная библиотека - PIL. Однако, если вы просто выполняете базовые манипуляции, вам, вероятно, лучше использовать привязки Python для ImageMagick, которые будут намного эффективнее, чем написание преобразований на Python.
Я думаю, у вас есть это обратное: PIL предоставляет только самые базовые функции barebone-версии, но он прекрасно интегрируется с графическими интерфейсами Python. IM намного более полнофункциональный, но требует некоторой ручной работы с буферами для обмена туда и обратно для интеграции с графическим интерфейсом.
Скажем так, грустно, но Швы PIL отказаться от изделий и он даже не загружает файлы BMP, созданные с помощью Paint. Если вы заглянете на веб-страницу проекта, вы поймете это, поищите трекер ошибок (нет), активность в списке рассылки, SCM, ...
Если вы создаете собственный эффект обработки изображений, вам может пригодиться PythonPixels. http://halfhourhacks.blogspot.com/2008/03/pythonpixels.html Он предназначен для написания и экспериментов с обработкой изображений.
Также есть пикаир, который может быть более подходящим в зависимости от ваших потребностей.
У вас также есть подход к обработке изображений, основанный на «стандартных» научных модулях: SciPy имеет целый пакет, посвященный обработке изображений: scipy.ndimage. Scipy - это, по сути, стандартный пакет общих численных расчетов; он основан на де-факто стандартном модуле обработки массивов NumPy: изображениями также можно управлять как массивом чисел. Что касается отображения изображений, Матплотлиб (также часть «научной трилогии») делает отображение изображений довольно просто.
SciPy все еще активно поддерживается, так что это хорошее вложение в будущее. Кроме того, SciPy в настоящее время также работает с Python 3, а Python Imaging Library (PIL) - нет.
Для справки в будущем ndimage в любом случае требует PIL.
@notJim: не так ли? PIL не указан в зависимостях SciPy от MacPorts, и я могу выполнить import scipy без установки PIL (import Image не работает с ImportError).
Да, когда я пытался прочитать изображение с помощью ImRead, я получил ошибку «поднять ImportError (« Не удалось импортировать библиотеку изображений Python (PIL) »»
@notJim: Это правда, что SciPy полагается на PIL для чтения изображений (я пробовал с «простым» файлом JPEG, и он потерпел неудачу, как и в вашем примере). SciPy все еще может делать изображение обработка без PIL (PIL является зависимостью необязательный).
В зависимости от того, что вы подразумеваете под «обработкой изображений», лучшим выбором могут быть библиотеки на основе numpy: махотас, scikits.image или scipy.ndimage. Все это работает на основе массивов numpy, поэтому вы можете смешивать и сопоставлять функции из одной библиотеки и другой.
Я запустил веб-сайт http://pythonvision.org, на котором есть больше информации об этом.
«Scikits.image SciKit (набор инструментов для SciPy) расширяет scipy.ndimage, чтобы обеспечить универсальный набор процедур обработки изображений». Интересно, почему они не внесли прямой вклад в ndimage.
Все эти пакеты имеют разную внутреннюю структуру. По крайней мере, мой пакет mahotas взял много кода из ndimage.
scikit-image теперь размещен по адресу scikit-image.org
Спасибо. Обновил мой ответ
Ссылка scipy.ndimage мертва. Текущая ссылка, скорее всего: scipy.github.io/devdocs/tutorial/ndimage.html
Для завершения списка: opencv http://opencv.willowgarage.com/documentation/python/index.html
OpenCV сейчас на opencv.org
VIPS должен быть быстрым и использовать несколько процессоров:
https://github.com/libvips/libvips/wiki/Speed-and-memory-use
Обработка изображений в реальном времени с использованием PyPy: morepypy.blogspot.com/2011/07/…