简介
在本教程中,我们将解释如何通过使用OpenCV函数cv2.resize()在Python中缩放和调整图像大小。我们将首先介绍cv2.resize()的语法并理解它的各种参数和选项。然后我们将看到使用这个函数调整图像大小的各种例子。
使用OpenCV调整图像大小:cv2.resize()
语法
cv2.resize(src, dsize, fx, fy, interpolation)
- src -这是需要调整大小的输入图像。
- dsize -输出图像的大小,以(宽,高)的形式给出
- fx -表示沿x轴的比例因子
- fy -表示沿y轴的比例系数
- interpolation -表示插值技术,默认为cv2.INTER_LINEAR
一些需要考虑的问题 cv2.调整大小()
- 你可以使用dsize或者同时使用fx和fy来调整图像的大小。
- dsize参数可以用来指定精确的图像尺寸。但为此,你必须事先计算出调整后的图像的宽度和高度。
- 如果你想用一个系数来缩放图像,fx和fy是很好的选择。例如,0.5代表一半,2代表两倍,等等。
cv2.resize()的插值参数
为了调整图像的大小,cv2 resize()函数使用内插法来调整大小。这是因为当图像被放大时,它需要更多的像素来填满实际像素之间的空间。而当图像被缩小时,它需要
- cv2.INTER_LINEAR -它使用双线性插值,最好用于将图像放大到较大的尺寸。这是cv2.resize()中的默认选项
- cv2.INTER_NEAREST -它使用最近邻插值,速度快,但会产生块状的图像。
- cv2.INTER_AREA -它使用像素区域插值,最好用于缩小图像的尺寸。
- cv2.INTER_CUBIC -它在一个4 x 4像素的邻域上使用二立方插值
。它的速度相对较慢。 - cv2.INTER_LANCZOS4 -它在一个8 x 8像素的
邻域上使用Lanczos插值,它产生最高的质量,但速度很慢。
Python OpenCV中cv2.resize()的例子
让我们从导入OpenCV库开始,如下图所示
在[0]中:
import cv2
import matplotlib.pyplot as plt
读取样本图像并显示
接下来,我们将为我们的例子读取一个样本图像,并显示它。我们可以看到图像的原始尺寸是800×534。
在[1]中:
#read image
img=cv2.imread("dog.jpg")
print('Image Width is',img.shape[1])
print('Image Height is',img.shape[0])
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
Out[1]:
Image Width is 800
Image Height is 534

例子 - 1: 通过计算像素大小将图像的大小调整为一半
为了将图像的大小调整为一半,我们首先计算出新图像的宽度和高度的像素大小,然后将其传递给cv2 resize()函数。可以看出,新图像的宽度和高度是原图像的一半。
In[2]:
#Calculating the Pixel Size for Resizing
new_width = int(img.shape[1]/2)
new_height = int(img.shape[0]/2)
img_half = cv2.resize(img, (new_width, new_height))
print('Image Width is',img_half.shape[1])
print('Image Height is',img_half.shape[0])
plt.imshow(cv2.cvtColor(img_half, cv2.COLOR_BGR2RGB))
输出[2]:
Image Width is 400
Image Height is 267

例子 - 2: 将图像缩小到因子0.5(一半)
这是另一种将图像大小调整为一半的方法,将x轴和y轴的系数值传递给cv2 resize函数为0.5。在这种情况下,不需要计算新图像的像素大小。
In[3]:
img_half = cv2.resize(img, None, fx = 0.5, fy = 0.5)
print('Image Width is',img_half.shape[1])
print('Image Height is',img_half.shape[0])
plt.imshow(cv2.cvtColor(img_half, cv2.COLOR_BGR2RGB))
输出[3]:
Image Width is 400
Image Height is 267

例子 - 3: 通过计算像素大小来调整图像大小至两倍
为了使图像大小翻倍,首先要计算新图像的宽度和高度的像素大小,然后将它们传递给cv2 resize()函数。可以看出,新图像的宽度和高度是原图像的两倍。
In[4]:
#Calculating the Pixel Size for Resizing
new_width = int(img.shape[1]*2)
new_height = int(img.shape[0]*2)
img_double = cv2.resize(img, (new_width, new_height))
print('Image Width is',img_double.shape[1])
print('Image Height is',img_double.shape[0])
plt.imshow(cv2.cvtColor(img_double, cv2.COLOR_BGR2RGB))
输出[4]:
Image Width is 1600
Image Height is 1068

例子 - 4: 将图像放大到系数2(双倍)
这是另一种将图像放大到两倍的方法,通过将x轴和y轴的因子参数值传递给cv2 resize函数为2。这里,不需要计算新图像的像素大小。
In[5]:
img_double = cv2.resize(img, None, fx = 2, fy = 2)
print('Image Width is',img_double.shape[1])
print('Image Height is',img_double.shape[0])
plt.imshow(cv2.cvtColor(img_double, cv2.COLOR_BGR2RGB))
Out[5]:
Image Width is 1600
Image Height is 1068

The postHow to Scale and Resize Image in Python with OpenCV cv2.resize()appeared first onMLK - Machine Learning Knowledge.