Обробка зображень у Python? [зачинено]


81

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


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

Відповіді:


53

Найвідоміша бібліотека - PIL . Однак, якщо ви просто виконуєте базові маніпуляції, вам, мабуть, краще з прив'язками Python для ImageMagick , що буде набагато ефективніше, ніж написання перетворень на Python.


7
Я думаю, у вас це є назад: PIL надає лише найосновніші базові функції, але він чудово інтегрується до графічних інтерфейсів Python. IM є надзвичайно повнофункціональним, але для інтеграції з графічним інтерфейсом потрібні деякі торгові буфери, що працюють вручну.
SilverbackNet

19
Скажімо так, сумно, але PIL, здається, відмовляється, і він навіть не завантажує файли BMP, створені за допомогою Paint. Якщо ви перевірите веб-сторінку проекту, ви це зрозумієте, знайдіть відстежувач помилок (немає), активність у списку розсилки, SCM, ...
sorin

19
Подушка - це виделка PIL, яка підтримується і розвивається. Ймовірно, краще використовувати його замість цього.
Девід Джонстон,

46

Залежно від того, що ви маєте на увазі під "обробкою зображень", кращий вибір може бути у бібліотеках на основі numpy : mahotas , scikits.image або scipy.ndimage . Всі вони працюють на основі масивів numpy, тому ви можете поєднувати та поєднувати функції з однієї бібліотеки та іншої.

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


"Scikits.image SciKit (набір інструментів для SciPy) розширює scipy.ndimage, щоб забезпечити різноманітний набір процедур обробки зображень." Цікаво, чому вони не просто внесли безпосередній внесок у ndimage.
ендоліт

1
Усі ці пакети мають різну внутрішню структуру. Принаймні мій пакет, mahotas, взяв багато коду з ndimage.
luispedro

scikit-imageзараз розміщений на scikit-image.org
Стефан ван дер

Дякую. Оновив свою відповідь
luispedro

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, я отримав повідомлення про помилку “raise ImportError (“ Не вдалося імпортувати бібліотеку зображень Python (PIL) ””
davidtbernal,

2
@notJim: Це правда, що SciPy покладається на PIL для зчитування зображень (я спробував із "простим" файлом JPEG, і це не вдалося, як у вашому прикладі). SciPy все ще може обробляти зображення без PIL (PIL - це необов’язкова залежність).
Ерік Лебіго



6

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


9
Ви взагалі користувалися Google, перш ніж задавати це запитання? :-) Я не кажу, що потрібно , просто здається трохи смішним відповідати на власне запитання менш ніж за хвилину.
Alexandra Franks

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

8
З Поширених запитань: Також цілком чудово задавати і відповідати на власне запитання щодо програмування, але зробіть вигляд, що ви в небезпеці: сформулюйте це у формі запитання. Хоча, я думаю, що на це запитання може легко відповісти кожен, хто потребує, швидко за допомогою пошуку Google ...
Martin W

5
@MartinW - Я знайшов це запитання за допомогою пошуку Google
Bulwersator


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.