Обработка изображений — одна из наиболее часто выполняемых задач в цифровом мире. Поворот изображения, изменение размера и добавление различных фильтров — это частые операции, которые мы выполняем регулярно. Изменение размера изображения относится к масштабированию изображений. Вы можете увеличивать или уменьшать масштаб изображения. Масштабирование очень удобно в приложениях машинного обучения.
В этом примере мы увидим, как изменить размер изображения в Python с помощью библиотеки OpenCV.
Сначала мы импортируем модуль cv2, а затем используем метод cv2.resize() для изменения размера изображений в Python.
Метод cv2.resize() в Python
Чтобы изменить размер изображений в Python с помощью OpenCV, используйте метод cv2.resize(). OpenCV предоставляет нам ряд методов интерполяции для изменения размера изображения.
Изменение изображения означает изменение его размеров. Размерами могут быть ширина, высота или и то, и другое. Кроме того, соотношение сторон исходного изображения может быть сохранено в изображении с измененным размером. Для изменения размера изображения OpenCV предоставляет функцию cv2.resize().

Метод интерполяции для изменения размера параметров
- cv2.INTER_AREA: этот параметр используется, когда нам нужно уменьшить изображение.
- cv2.INTER_CUBIC: этот вариант работает медленно, но более эффективно.
- cv2.INTER_LINEAR: этот параметр в основном используется, когда требуется масштабирование. Это метод интерполяции по умолчанию в OpenCV.
Синтаксис
|
1 |
cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) |
Параметры
| Параметр | Описание |
| src | Этот параметр является обязательным и является исходным/входным изображением. |
| dsize | Это обязательный параметр и желаемый размер выходного изображения. |
| fx | Это необязательный параметр и коэффициент масштабирования по горизонтальной оси. |
| fy | Это необязательный коэффициент масштабирования по вертикальной оси. |
| interpolation | Это необязательный флаг, который принимает один из следующих методов.
INTER_NEAREST – это интерполяция ближайшего соседа. INTER_LINEAR — это билинейная интерполяция(используется по умолчанию). INTER_AREA — передискретизация с использованием отношения площади пикселя. Это может быть предпочтительной функцией для прореживания изображения, поскольку она дает результаты без муара. Но когда изображение масштабируется, это похоже на метод INTER_NEAREST. INTER_CUBIC — это бикубическая интерполяция по окрестностям 4×4 пикселей. INTER_LANCZOS4 — это интерполяция Ланцоша по окрестностям 8×8 пикселей. |
Пример
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# Importing cv2 import cv2 import matplotlib.pyplot as plt # Path path = 'cropped_image.jpg' # Reading an image in default mode image = cv2.imread(path) half = cv2.resize(image,(0, 0), fx=0.1, fy=0.1) bigger = cv2.resize(image,(1050, 1610)) stretch_near = cv2.resize(image,(780, 540), interpolation=cv2.INTER_NEAREST) Titles = ["Original", "Half", "Bigger", "Interpolation Nearest"] images = [image, half, bigger, stretch_near] count = 4 for i in range(count): plt.subplot(2, 2, i + 1) plt.title(Titles[i]) plt.imshow(images[i]) plt.show() |
Вывод:

В этом примере мы импортировали библиотеки cv2 и matplotlib. На следующем шаге мы определили путь к изображению и считываем изображение с помощью метода imread().
Затем мы изменяем размер изображений с четырьмя различными параметрами, используя метод cv2.resize().
- Обычное изображение
- Половина изображения
- Увеличенное изображение
- Изображение Stretch_near
А затем мы отображаем изображения одно за другим, используя цикл for. Мы используем библиотеку matplotlib для построения четырех изображений с их заголовком.
Уменьшение масштаба с помощью resize()
В следующем коде значение scale_percent содержит процент, на который должно быть масштабировано изображение. Предоставление значения <100 уменьшает предоставленное изображение.
Мы будем использовать это значение scale_percent вместе с размерами исходного изображения для расчета ширины и высоты выходного изображения. Мы предоставим 20% scale_percent. Таким образом, он изменит размер до 20% от исходного размера изображения.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# Importing cv2 import cv2 # Path path = 'cropped_image.jpg' # Reading an image in default mode image = cv2.imread(path) print('Original Dimensions : ', image.shape) scale_percent = 20 # percent of original size width = int(image.shape[1] * scale_percent / 100) height = int(image.shape[0] * scale_percent / 100) dim =(width, height) # resize image resized = cv2.resize(image, dim, interpolation=cv2.INTER_AREA) print('Resized Dimensions : ', resized.shape) cv2.imshow("Resized image", resized) cv2.waitKey(0) cv2.destroyAllWindows() |
Вывод:

Масштабирование изображения с помощью Python cv2 resize()
В следующем коде значение scale_percent содержит процент, на который должно быть масштабировано изображение. Предоставление значения > 100 повышает масштаб предоставленного изображения.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# Importing cv2 import cv2 # Path path = 'cropped_image.jpg' # Reading an image in default mode image = cv2.imread(path) print('Original Dimensions : ', image.shape) scale_percent = 120 # percent of original size width = int(image.shape[1] * scale_percent / 100) height = int(image.shape[0] * scale_percent / 100) dim =(width, height) # resize image resized = cv2.resize(image, dim, interpolation=cv2.INTER_AREA) print('Resized Dimensions : ', resized.shape) cv2.imshow("Resized image", resized) cv2.waitKey(0) cv2.destroyAllWindows() |
Вывод:

Вот и все для метода Python cv2 resize().
