Какие библиотеки Python используются для обработки изображений?

Ответ

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

Основные библиотеки:

  • Pillow (PIL Fork): Является форком Python Imaging Library (PIL) и предоставляет мощные возможности для базовой обработки изображений.
    • Применение: Изменение размера, обрезка, поворот, наложение фильтров, работа с цветовыми пространствами, преобразование форматов. Идеально подходит для веб-приложений, обработки пользовательских аватаров, генерации превью.
  • OpenCV (Open Source Computer Vision Library): Мощная библиотека для компьютерного зрения, изначально написанная на C++, но имеющая полноценные Python-биндинги.
    • Применение: Обнаружение объектов, распознавание лиц, сегментация, отслеживание движения, калибровка камеры, сложные алгоритмы обработки изображений и видео в реальном времени.

Пример обработки изображения с Pillow (обрезка и поворот):

from PIL import Image

try:
    # Открытие изображения
    img = Image.open('example.jpg') # Убедитесь, что файл 'example.jpg' существует

    # Обрезка изображения: (left, top, right, bottom)
    # Обрезаем центральную часть размером 300x300 пикселей
    width, height = img.size
    left = (width - 300) / 2
    top = (height - 300) / 2
    right = (width + 300) / 2
    bottom = (height + 300) / 2
    cropped_img = img.crop((left, top, right, bottom))

    # Поворот изображения на 45 градусов
    rotated_img = cropped_img.rotate(45, expand=True) # expand=True сохраняет все изображение после поворота

    # Сохранение обработанного изображения
    rotated_img.save('processed_example.jpg')
    print("Изображение успешно обработано и сохранено как 'processed_example.jpg'")

except FileNotFoundError:
    print("Ошибка: Файл 'example.jpg' не найден. Пожалуйста, убедитесь, что он находится в той же директории.")
except Exception as e:
    print(f"Произошла ошибка при обработке изображения: {e}")

Помимо этих, существуют специализированные библиотеки, такие как scikit-image для научных вычислений с изображениями и imgaug для аугментации данных в задачах машинного обучения.

Ответ 18+ 🔞

Слушай, вот сидишь ты, такой весь из себя, и думаешь: "Хочу я картинки на Питоне пощупать, как бы это сделать?" А там, блядь, оказывается, целый ёперный театр библиотек на выбор, и каждая тянет одеяло на себя. Ну, давай разбираться, пока не взорвалась голова.

Основные игроки на поле:

  • Pillow (он же PIL Fork): Это как наш старый добрый слесарь-универсал. Форк той самой древней PIL. Не жди от него цирковых трюков с компьютерным зрением, но всё базовое он сделает на ура.
    • Зачем он? Обрезать, повернуть, уменьшить, фильтры простые наложить, формат поменять — вот его хлеб. Идеален, когда нужно на сайте юзерам аватарки ресайзить или превьюшки генерить. Надёжный, как швейцарские часы, только попроще.
  • OpenCV (Open Source Computer Vision Library): А вот это уже, сука, тяжёлая артиллерия. Библиотека-монстр, изначально на плюсах писаная, но для Питона свои лапки-биндинги подставила.
    • Зачем он? Если тебе нужно не просто картинку обрезать, а найти на ней все морды, отследить движущийся объект или научить нейросеть различать котиков и собак — это твой выбор. Мощь нереальная, но и порог входа, блядь, соответствующий.

Ну а теперь, чтобы не быть голословным, смотри, как этим Pillow пользоваться. Примерчик на коленке (обрезка да поворот):

from PIL import Image

try:
    # Открываем картинку, ебать её в сраку
    img = Image.open('example.jpg') # Смотри, чтоб файл 'example.jpg' был, а то будет облом

    # Режем по живому. Координаты: (слева, сверху, справа, снизу)
    # Вырежем квадрат 300x300 из центра, например
    width, height = img.size
    left = (width - 300) / 2
    top = (height - 300) / 2
    right = (width + 300) / 2
    bottom = (height + 300) / 2
    cropped_img = img.crop((left, top, right, bottom))

    # Крутанули на 45 градусов, expand=True — чтобы углы не срезало
    rotated_img = cropped_img.rotate(45, expand=True)

    # Всё, сохраняем плоды трудов
    rotated_img.save('processed_example.jpg')
    print("Всё, готово, пацан. Лежит 'processed_example.jpg'")

except FileNotFoundError:
    print("Э, бошка думай! Файл 'example.jpg' не найден. Положи его в ту же папку, где скрипт.")
except Exception as e:
    print(f"Чёт пошло не так, вот ошибка тебе на разбор: {e}")

А ещё есть, между прочим, scikit-image для всяких научных извращений с картинками и imgaug — чтобы в машинном обучении данные для тренировки мутить и разнообразить. Но это, как говорится, уже совсем другая история, нахуй.