Масштабирование изображений в Python: подробное руководство с примерами кода

Изображения являются неотъемлемой частью многих приложений, и часто нам приходится манипулировать ими, чтобы они соответствовали определенным размерам или соотношениям сторон. Масштабирование изображения — это распространенная операция, которая позволяет нам изменять размер изображения, сохраняя его пропорции. В этой статье мы рассмотрим различные методы масштабирования изображений в Python, приведя попутно примеры кода.

Метод 1. Использование библиотеки изображений Python (PIL):

Библиотека изображений Python (PIL) – популярная библиотека для задач обработки изображений. Он обеспечивает простой и понятный способ масштабирования изображений.

from PIL import Image
def scale_image_pil(image_path, scale_factor):
    image = Image.open(image_path)
    width, height = image.size
    new_width = int(width * scale_factor)
    new_height = int(height * scale_factor)
    resized_image = image.resize((new_width, new_height))
    resized_image.save("scaled_image_pil.jpg")

Метод 2. Использование библиотеки OpenCV:

OpenCV – мощная библиотека компьютерного зрения, которая включает в себя различные функции обработки изображений, включая масштабирование изображений.

import cv2
def scale_image_opencv(image_path, scale_factor):
    image = cv2.imread(image_path)
    width = int(image.shape[1] * scale_factor)
    height = int(image.shape[0] * scale_factor)
    resized_image = cv2.resize(image, (width, height))
    cv2.imwrite("scaled_image_opencv.jpg", resized_image)

Метод 3. Использование библиотеки scikit-image:

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

from skimage import io, transform
def scale_image_skimage(image_path, scale_factor):
    image = io.imread(image_path)
    scaled_image = transform.rescale(image, scale_factor)
    io.imsave("scaled_image_skimage.jpg", scaled_image)

Метод 4: использование NumPy:

NumPy — фундаментальная библиотека для научных вычислений на Python. Его можно использовать для выполнения операций масштабирования изображения.

import numpy as np
import cv2
def scale_image_numpy(image_path, scale_factor):
    image = cv2.imread(image_path)
    width = int(image.shape[1] * scale_factor)
    height = int(image.shape[0] * scale_factor)
    resized_image = cv2.resize(image, (width, height), interpolation=cv2.INTER_LINEAR)
    cv2.imwrite("scaled_image_numpy.jpg", resized_image)

В этой статье мы рассмотрели несколько методов масштабирования изображений в Python. Мы рассмотрели использование таких библиотек, как PIL, OpenCV, scikit-image и NumPy, предоставив примеры кода для каждого метода. В зависимости от ваших конкретных требований и предпочтений вы можете выбрать метод, который наилучшим образом соответствует вашим потребностям. Используя эти методы, вы можете легко манипулировать размером изображений, сохраняя при этом их соотношение сторон.