『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 多维数组

注意事项:

  1. 图像缩放可以通过 dsize 直接设定输出图像的大小,也可以通过 dx, dy 设置图像缩放的比例(dsize 设为 None)。

  2. 也可以通过构造缩放变换矩阵 MAZ,由函数 cv2.warpAffine 计算变换后的缩放平移图像。缩放变换矩阵 MAZ 由以下公式描述:

[ x ~ y ~ 1 ] = M A Z [ x y 1 ] , M A Z = [ f x 0 0 0 f y 0 0 0 1 ] \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=MAZxy1,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)

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐