如何在Python中缩放图像

2,902 阅读3分钟

How to Scale Images in Python using OpenCV

图像缩放是计算机视觉问题中最重要的操作之一。有时,用户想放大图像以获得特定对象的更多细节,有时用户需要缩小图像以符合某些标准。

Python中的Opencv缩放图像

要在Python中缩放一个图像,可以使用**cv2.resize()**方法。缩放 图像意味着修改图像的尺寸,可以是只有宽度,只有高度,也可以是两者都有。此外,你可以保留被缩放的图像的长宽比。

要在Python中调整图像的大小或比例,可以使用cv2.resize()函数。

调整图像的大小可以通过很多方式进行。我们将研究演示以下调整大小操作的例子。

  1. 在保留长宽比的情况下(图像的高度与宽度之比保持不变)。
    1. 降尺度(减少图像的大小)。
    2. 升格(增加图像的大小)。
  2. 在不保留长宽比的同时。
    1. 只用宽度调整图像的大小(增加或减少图像的宽度,保持高度不变)。
    2. 只调整图像的高度(增加或减少图像的高度,保持宽度不变)。
  3. 将图像的大小调整到特定的宽度和高度。

用cv2.resize()缩小图像尺寸

要在Python 图像缩小到一半大小,可以使用**cv2.resize()**函数,它把fx和fy值传给0.5。

请看下面的代码例子。

# app.py

import numpy as np
import cv2

img = cv2.imread('data.png', 1)
cv2.imshow('Original', img)

img_half = cv2.resize(img, (0, 0), fx=0.5, fy=0.5)
cv2.imshow('Half Image', img_half)

cv2.waitKey(0)
cv2.destroyAllWindows()

输出

Scale Images in Python

在这个例子中,我们使用resize() 图像来缩放原始图像的一半大小。我们将传入一个值(img, ) ,然后传入绝对大小, 或者(0,0)不设置像素的绝对大小, 然后我们可以选择 传入我们的相对因子 fx=0.5,fy=0.5 。这将输出 在两个维度上都是原图一半大小的图像 。

用cv2.resize()提升图像大小

要在Python中使用opencv 放大 图像,可以使用cv2.resize()方法。cv2.resize()方法可以接受fxfy值为1.5

# app.py

import numpy as np
import cv2

img = cv2.imread('data.png', 1)
cv2.imshow('Original', img)

img_scale_up = cv2.resize(img, (0, 0), fx=1.5, fy=1.5)

cv2.imshow('Upscaled Image', img_scale_up)

cv2.waitKey(0)
cv2.destroyAllWindows()

输出

Upscale image with cv2.resize()

如何在Python中拉伸图像

要在Python拉伸 图像,使用**cv2.resize()**方法并在缩放图像时传递明确的尺寸。

# app.py

import numpy as np
import cv2

img = cv2.imread('data.png', 1)
cv2.imshow('Original', img)

img_stretch = cv2.resize(img, (600, 600))

cv2.imshow('Stretched Image', img_stretch)

cv2.waitKey(0)
cv2.destroyAllWindows()

输出

Python using OpenCV

你可以看到右边的图像被拉伸到了(600, 6000)的尺寸。

缩放时设置插值模式

要在缩放时设置一个插值模式,请传递插值参数。我们将使用最近的插值模式而不是默认模式。

# app.py

import numpy as np
import cv2

img = cv2.imread('data.png', 1)
cv2.imshow('Original', img)

img_inter = cv2.resize(img, (600, 600), interpolation=cv2.INTER_NEAREST)

cv2.imshow('Nearest Interpolated Image', img_inter)

cv2.waitKey(0)
cv2.destroyAllWindows()

输出

Interpolation in Python cv2

在Python中水平缩放图像

要使用OpenCV水平缩放图像,只需沿X轴或水平轴缩放图像,并保持图像的高度不变。

# app.py

import numpy as np
import cv2

img = cv2.imread('data.png', 1)
cv2.imshow('Original', img)

new_width = 300

dim_size = (new_width, img.shape[0])

horizon_img = cv2.resize(img, dim_size, interpolation=cv2.INTER_AREA)

cv2.imshow('Horizontal Scaled Image', horizon_img)

cv2.waitKey(0)
cv2.destroyAllWindows()

输出

Scale image horizontally

在Python中垂直缩放图像

使用OpenCV垂直缩放图像,只沿Y轴或垂直轴缩放图像,并保持图像的宽度不变。

# app.py

import numpy as np
import cv2

img = cv2.imread('data.png', 1)
cv2.imshow('Original', img)

new_height = 600

dim_size = (new_height, img.shape[1])

horizon_img = cv2.resize(img, dim_size, interpolation=cv2.INTER_AREA)

cv2.imshow('Vertically Scaled Image', horizon_img)

cv2.waitKey(0)
cv2.destroyAllWindows()

输出

Scale image vertically in Python

结论

要在Python中缩放图像,可以使用cv2.resize()方法。我们看到的情况是,我们可以保留长宽比并改变尺寸,或者不保留它。我们已经在水平和垂直方向上缩放了图像。这就是Python中缩放图像的内容。

相关帖子

缩放图片

筛选图像像素

淘宝网上卖的是什么?

The postOpencv scale image:如何在Python中缩放图像首次出现在AppDividend上。