Автор оригинала: 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 (), чтобы изменить размер изображения вдоль ширины, высоты или оба путем сохранения соотношения сторон или не сохраняя соотношение сторон.