Як працювати з графікою на Python | robot_dreams
Для відстеження статусу замовлення - авторизуйтесь
Введіть код, який був надісланий на пошту Введіть код із SMS, який був надісланий на номер
 
Код дійсний протягом 2 хвилин Код з SMS дійсний протягом 2 хвилин
Ви впевнені, що хочете вийти?
Сеанс завершено
На головну
Як працювати з графікою на Python

Як працювати з графікою на Python

Огляд бібліотеки Pillow

Перші рішення для роботи з графікою у Python з’явилися в 1990 році — як і сама мова.Тоді був доступним лише набір програм ImageMagick. Зараз у Python кілька десятків бібліотек, що підтримують графічну обробку. Pillow — популярний варіант для стандартної обробки зображень.

Розповідаємо, що вміє Pillow і чим відрізняється від інших Python-пакетів.

Що роблять графічні Python-бібліотеки

Для роботи із зображеннями комп’ютеру зазвичай потрібно їх проаналізувати — сформатувати або витягнути властивості.

В обробки зображень є загальні завдання: зчитування, сегментація, перетворення, масштабування. Але в бібліотеках можна реалізувати складнішу роботу з графічними файлами — витягування метаданих, обчислення похідних, відновлення та розпізнавання картинок, сегментацію та класифікацію. Усі вони виконують свої завдання.

В чому особливість Pillow

Pillow — форк бібліотеки PIL (Python Imaging Library). Останню перестали оновлювати у 2009 році, тому створили Pillow — нативний модуль, половину якого зроблено на Python, а половину — на C. Pillow — кросплатформній бібліотеці. Щоб запустити її на Windows, достатньо скористатися системою управління пакетами pip. На iOS спочатку потрібно налаштувати середовище розробки XCode, а також Homebrew — утиліту для командного рядка в macOS, яка дає змогу встановлювати застосунки.

У режимі читання Pillow зчитує понад 40 форматів зображень. Повна підтримка є у 21 формату, серед яких — BMP, JPEG, GIF, TIFF, PNG та PSD. Більше деталей — в документації Pillow.

Що вміє бібліотека

Основні функції Pillow — у модулі Image. Зробити екземпляр цього класу можна, завантаживши зображення, обробивши інші зображення або створивши їх. Якщо файл зчитується з диска за допомогою функції open, то бібліотека автоматично визначає його формат.

У Pillow є відкладене «ліниве» завантаження — під час відкриття зображення його декодування не відбувається, тобто зображення не зчитуються з файлу, поки користувач не спробує їх обробити. Ви можете переглянути властивості файлу, визначити, чи він відповідає вимогам і чи варто з ним працювати. Лише після викликання функції load для файлу з’являється потрібна кількість оперативної пам'яті.
 

Часто обрізання зображень — перший етап обробки. Для цього в Pillow можна використовувати два способи:

  • функцію crop, в якій вказують координати верхнього лівого та правого нижнього кутів, і команду resize;
  • команди reduce та thumbnail — цей спосіб зважає на співвідношення сторінки картинки.

Щоб накласти одне зображення на інше (наприклад, для нанесення водяних знаків), створюють нове зображення, накладаючи водяний знак на основне. За замовчуванням «вставлене» зображення буде в верхньому лівому куті. Щоб зробити фон прозорим, використовують модуль ImageDraw, яка вирізає фігури на зображеннях. Насиченість кольору фігури можна регулювати за допомогою модуля ImageEnhance. Усі класи поліпшення в модулі мають загальний інтерфейс: показники яскравості, контрастності та різкості множать на потрібний коефіцієнт. Дзеркально відбити зображення можна за допомогою функції transpose та константи flip_left_right. Бібліотека також дає змогу конвертувати зображення у різні колірні режими.

Конвертація в OpenCV

Pillow може автоматично обробляти великі масиви фотографій. У версії Pillow-SIMD зображення з роздільною здатністю 5184 на 3456 конвертується в картинку розміром 320 пікселів за 0,79 секунди. Pillow часто застосовують для уніфікації фото й аналізу їхніх властивостей. Для машинного зору використовують іншу бібліотеку — OpenCV.

OpenCV не читає EXIF або цифровий профіль, тому неможливо заздалегідь дізнатися формат зображення. Річ у тому, що OpenCV налаштована на роботу з верифікованими джерелами. Наприклад, з камерою, яка надсилає фото в одному форматі й роздільній здатності.

Зображення з Pillow можна експортувати у NumPy, і OpenCV зможе обробити їх як власні. І навпаки.

Які завдання розв’язують інші графічні Python-бібліотеки

  • Scikit-image

    Це бібліотека з відкритим кодом, яка працює з масивами NumPy. Серед її функцій — конвертація кольорового простору, покращення зображення, фільтр сортування та операції малювання графіки — побудова графіків, гістограм, створення шаблонів. Також Scikit-image дозволяє регулювати інтенсивність зображення.
  • Matplotlib

    Це Python-пакет для візуалізації математичних операцій — створення діаграм, гістограм та графіків функцій. Також у Matplotlib реалізовано малювання контурів об’єктів та інтерактивне маркування — можливість робити помітки на зображеннях. Скрипт запам’ятовує місця кліків та зберігає їх у списку.

  • SciPy

    Бібліотека побудована на NumPy, а її основне призначення — виконання інженерних та наукових обчислень. Але в ній можна працювати із зображеннями. Наприклад, створювати ґауссівський шум. Часто це початковий етап інтерполяції та обчислення точок інтересу. Ще у SciPy є операції, які визначають зміну інтенсивності зображення.
  • NumPy

    Цінною властивістю бібліотеки NumPy є можливість подавати зображення у вигляді числового масиву. Цей метод застосовують для створення векторних представлень та матриць зображень. Крім того, в межах цієї бібліотеки ви можете легко перетворювати зображення на різні градації кольорів та зменшувати шум на картинках.

    Ще NumPy послуговуються для обробки датасетів у Computer Vision. Через високу роздільну здатність зображень у застосунках комп’ютерного зору часто впроваджують зменшення розмірності. У NumPy це можна реалізувати за допомогою методу головних компонент (PCA). Таким чином можна зберігати більше інформації про тренувальні дані, використовуючи менше вимірів.
Ще статті