『youcans 的 OpenCV 例程200篇 - 总目录』
【youcans 的 OpenCV 例程200篇】30. 图像的缩放(cv2.resize)
缩放只是调整图像的大小。
OpenCV 提供了 cv2.resize 函数,实现图像的缩放和大小变换 。
函数说明:
cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) → dst
参数说明:
- scr:变换操作的输入图像
- dsize: 输出图像的大小,二元元组 (width, height)
- dst:变换操作的输出图像,可选项
- fx, fy:x 轴、y 轴上的缩放比例,实型,可选项
- interpolation:插值方法,整型,可选项
- cv2.INTER_LINEAR:双线性插值(默认方法)
- cv2.INTER_AREA:使用像素区域关系重采样,缩小图像时可以避免波纹出现
- cv2.INTER_NEAREST:最近邻插值
- cv2.INTER_CUBIC:4x4 像素邻域的双三次插值
- cv2.INTER_LANCZOS4:8x8 像素邻域的Lanczos插值
- 返回值:dst,变换操作的输出图像,ndarray 多维数组
注意事项:
-
图像缩放可以通过 dsize 直接设定输出图像的大小,也可以通过 dx, dy 设置图像缩放的比例(dsize 设为 None)。
-
也可以通过构造缩放变换矩阵 MAZ,由函数 cv2.warpAffine 计算变换后的缩放平移图像。缩放变换矩阵 MAZ 由以下公式描述:
[x~y~1]=MAZ[xy1],MAZ=[fx000fy0001]\begin{bmatrix} \tilde{x}\\ \tilde{y}\\ 1 \end{bmatrix} = M_{AZ} \begin{bmatrix} x\\ y\\ 1 \end{bmatrix} ,\hspace{1em} M_{AZ} = \begin{bmatrix} f_x &0 &0\\ 0 &f_y &0\\ 0 &0 &1 \end{bmatrix} ⎣⎡x~y~1⎦⎤=MAZ⎣⎡xy1⎦⎤,MAZ=⎣⎡fx000fy0001⎦⎤
由偏移量 (Tx, Ty) 按上式构造平移变换矩阵 MAT,由函数 cv2.warpAffine 可以计算变换后的平移图像。
基本例程:1.39 图像的缩放变换
# 1.39 图像的缩放img = cv2.imread("../images/Fractal08.png") # 读取彩色图像(BGR)height, width = img.shape[:2] # 图片的高度和宽度imgZoom1 = cv2.resize(img, (int(0.75*width), int(height)))imgZoom2 = cv2.resize(img, None, fx=0.75, fy=1.0, interpolation=cv2.INTER_AREA)plt.figure(figsize=(8,6))plt.subplot(121), plt.axis('off'), plt.title("Zoom: 0.75*W,1.0*H")plt.imshow(cv2.cvtColor(imgZoom1, cv2.COLOR_BGR2RGB))plt.subplot(122), plt.axis('off'), plt.title("Zoom: fx=0.75,fy=1.0")plt.imshow(cv2.cvtColor(imgZoom2, cv2.COLOR_BGR2RGB))plt.show()
(本节完)
版权声明:
youcans@xupt 原创作品,转载必须标注原文链接:(https://blog.csdn.net/youcans/article/details/125112487)
Copyright 2022 youcans, XUPT
Crated:2021-11-18
【第3章:图像的几何变换】
28. 图像的旋转(直角旋转)
30. 图像的缩放(cv2.resize)
31. 图像金字塔(cv2.pyrDown)