Автор оригинала: 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 ArrayDsize
Желательный размер выходного изображения, учитывая как кортежFX
это коэффициент масштабирования вдоль оси X или горизонтальной осиFY
это коэффициент масштабирования вдоль оси Y вертикальной осиИнтерполяция
может быть одним из следующих значений.- Inter_nearest.
- Inter_linear
- Inter_area.
- Inter_cubic.
- Inter_lancos4.
На основании выбранного метода интерполяции используется соответствующий алгоритм. Вы можете думать интерполяцию в качестве метода, который решает, какой пиксель получает значение, основанное на его соседних пикселях и масштабе, при котором изменяется изображение.
Как вы могли бы разместить изображение?
Вы можете изменить размер изображения тремя способами.
- Сохраните соотношение сторон и увеличьте или уменьшите ширину и высоту изображения. Просто чтобы сделать все возможное, соотношение сторон является соотношением ширины изображения до высоты изображения.
- Масштабируйте изображение только вдоль оси X или горизонтальной оси. Значение, изменение ширины, удерживая высоту того же, что и у оригинального изображения.
- Масштабируйте изображение только вдоль оси 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?
cv2.imread ()
Читает данный файл вcv2.imread_unchanged
с каналом прозрачности (если есть) и возвращает Numpy Array с значениями пикселей.Scale_Percent
Установлено на 50. Мы собираемся масштабировать изображение до 50% его оригинальных размеров, как ширина, так и высоты.- src.shape [1] дает ширину исходного изображения.
int (src.shape [1] * Scale_Percent/100)
рассчитывает 50% от исходной ширины. Точно так же высота также рассчитывается. - Тогда мы устанавливаем нужный размер
Dsize
С недавно вычисленнымиширина
иВысота
Отказ CV2.resize
Изменение размера изображенияSRC
до размераDsize
и возвращает Numpy Array.- Использование
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 (), чтобы изменить размер изображения вдоль ширины, высоты или оба путем сохранения соотношения сторон или не сохраняя соотношение сторон.