Рубрики
Без рубрики

Python opencv cv2 изменить размер изображения

Автор оригинала: Python Examples.

Opencv cv2.resize ()

Чтобы изменить размер изображения в Python, вы можете использовать CV2.Resize () функцию opencv library cv2.

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

В этом руководстве мы узнаем, как изменить размер изображения в Python с использованием библиотеки OpenCV.

Синтаксис CV2 Изменение размера () Функции

Ниже приведен синтаксис функции cv2.resize ().

cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]])

где

  • SRC является источником, оригинальным или входным изображением в виде Numpy Array
  • Dsize Желательный размер выходного изображения, учитывая как кортеж
  • FX это коэффициент масштабирования вдоль оси X или горизонтальной оси
  • FY это коэффициент масштабирования вдоль оси Y вертикальной оси
  • Интерполяция может быть одним из следующих значений.

    • Inter_nearest.
    • Inter_linear
    • Inter_area.
    • Inter_cubic.
    • Inter_lancos4.

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

Как вы могли бы разместить изображение?

Вы можете изменить размер изображения тремя способами.

  1. Сохраните соотношение сторон и увеличьте или уменьшите ширину и высоту изображения. Просто чтобы сделать все возможное, соотношение сторон является соотношением ширины изображения до высоты изображения.
  2. Масштабируйте изображение только вдоль оси X или горизонтальной оси. Значение, изменение ширины, удерживая высоту того же, что и у оригинального изображения.
  3. Масштабируйте изображение только вдоль оси Y или вертикальной оси. Значение, изменение высоты, сохраняя ширину, что и у оригинального изображения.

ИЗОБРАЖЕНИЕ ИЗОБРАЖЕНИЯ

Рассмотрим следующее изображение. Мы будем использовать это изображение в качестве входного или исходного изображения в нашем текущем примере программах.

Пример 1: изменение размера изображения – CV2.RESIZE ()

В следующем примере мы посмотрим, как мы можем изменить размер вышеуказанного изображения, используя cv2.resize () сохраняя соотношение сторон. Мы будем изменить размер до 50% своей фактической формы, то есть, мы уменьшим его высоту до 50% своего оригинала и шириной до 50% его оригинала.

Python Program

import cv2
 
src = cv2.imread('D:/cv2-resize-image-original.png', cv2.IMREAD_UNCHANGED)

#percent by which the image is resized
scale_percent = 50

#calculate the 50 percent of original dimensions
width = int(src.shape[1] * scale_percent / 100)
height = int(src.shape[0] * scale_percent / 100)

# dsize
dsize = (width, height)

# resize image
output = cv2.resize(src, dsize)

cv2.imwrite('D:/cv2-resize-image-50.png',output) 

Что мы сделали в приведенной выше программе Python?

  1. cv2.imread () Читает данный файл в cv2.imread_unchanged с каналом прозрачности (если есть) и возвращает Numpy Array с значениями пикселей.
  2. Scale_Percent Установлено на 50. Мы собираемся масштабировать изображение до 50% его оригинальных размеров, как ширина, так и высоты.
  3. src.shape [1] дает ширину исходного изображения. int (src.shape [1] * Scale_Percent/100) рассчитывает 50% от исходной ширины. Точно так же высота также рассчитывается.
  4. Тогда мы устанавливаем нужный размер Dsize С недавно вычисленными ширина и Высота Отказ
  5. CV2.resize Изменение размера изображения SRC до размера Dsize и возвращает Numpy Array.
  6. Использование cv2.imwrite Мы пишем вывод CV2.resize к локальному файлу изображения.

Выходное изображение

Пример 2: CV2 изменяет размер изображения горизонтально

В следующем примере мы рассмотрим изображение только вдоль оси X или горизонтальной оси. И мы держим высоту изображения без изменений.

В Dsize мы будем держать высоту того же, что и у оригинального изображения, но измените ширину.

Python Program

import cv2
 
src = cv2.imread('D:/cv2-resize-image-original.png', cv2.IMREAD_UNCHANGED)

# set a new width in pixels
new_width = 300

# dsize
dsize = (new_width, src.shape[0])

# resize image
output = cv2.resize(src, dsize, interpolation = cv2.INTER_AREA)

cv2.imwrite('D:/cv2-resize-image-width.png',output) 

Выходное изображение

CV2 изменяет размер изображения вертикально

В следующем примере мы рассмотрим изображение только вдоль оси Y или вертикальной оси. Ширина выходного изображения остается неизменным от значения исходного изображения.

В DSIZE мы будем держать ширину, что и у оригинального изображения, но измените высоту.

import cv2
 
src = cv2.imread('D:/cv2-resize-image-original.png', cv2.IMREAD_UNCHANGED)

# set a new height in pixels
new_height = 200

# dsize
dsize = (src.shape[1], new_height)

# resize image
output = cv2.resize(src, dsize, interpolation = cv2.INTER_AREA)

cv2.imwrite('D:/cv2-resize-image-height.png',output) 

Выходное изображение

Резюме

В этом руководстве примеров Python мы узнали, как использовать функцию OpenCV CV2.RESIZE (), чтобы изменить размер изображения вдоль ширины, высоты или оба путем сохранения соотношения сторон или не сохраняя соотношение сторон.