问题描述:
import cv2
import numpy as np
img=cv2.imread('logo.jpg')
# 下面的 None 本应该是输出图像的尺寸,但是因为后边我们设置了缩放因子
# 因此这里为 None
res=cv2.resize(img,None,fx=2,fy=2,interpolation=cv2.INTER_CUBIC)
#OR
# 这里呢,我们直接设置输出图像的尺寸,所以不用设置缩放因子
height,width=img.shape[:2]
res1=cv2.resize(img,(2*width,2*height),interpolation=cv2.INTER_CUBIC)
while(1):
cv2.imshow('res',res)
cv2.imshow('img',img)
if cv2.waitKey(1) & 0xFF == 27:
break
cv2.destroyAllWindows()
分析一下上面代码,回答一下缩放图片的两种方法res1和res2有区别吗?
问题解答:
在上面的代码中,res
和 res1
都是用来缩放图像的,但它们的实现方式有所不同:
-
res
:- 使用了缩放因子
fx
和fy
,分别为 2。意味着图像在水平和垂直方向上都被放大两倍。 - 输出图像的尺寸是通过因子计算得出的,而不是直接指定。
- 使用了缩放因子
-
res1
:- 直接指定了输出图像的尺寸,即将原始图像的宽度和高度都乘以 2。
- 这种方式不需要设置缩放因子,更加直观。
区别:
- 功能上,两者的结果是相同的,都是将图像放大到原始尺寸的两倍。
- 使用
fx
和fy
更加灵活,适合需要动态调整缩放比例的场景;而直接指定尺寸更清晰,适合已知目标尺寸的情况。