OpenCV-Python快速入门系列19图像放缩与插值

前言

在图像处理任务中,图像的放缩操作是非常常见的需求,例如调整图像大小以适配显示区域、数据增强或改变分辨率。OpenCV 提供了强大的图像放缩功能,并支持多种插值方法。

完整代码

import cv2 as cv

def resize_demo():
    # 加载图像
    image = cv.imread('images/test.png')
    if image is None:
        raise FileNotFoundError("图像路径错误,请检查路径是否正确!")

    # 获取图像的尺寸
    h, w, c = image.shape

    # 创建显示窗口
    cv.namedWindow("resize_demo", cv.WINDOW_AUTOSIZE)

    # 方法1:按目标尺寸放大图像(宽高均为原始的2倍)
    result1 = cv.resize(image, (w * 2, h * 2), interpolation=cv.INTER_NEAREST)

    # 方法2:按目标尺寸缩小图像(宽高均为原始的一半)
    result2 = cv.resize(image, (w // 2, h // 2), interpolation=cv.INTER_NEAREST)

    # 方法3:使用缩放因子调整大小(75% 原始尺寸)
    result3 = cv.resize(image, (0, 0), fx=0.75, fy=0.75, interpolation=cv.INTER_NEAREST)

    # 显示结果
    cv.imshow("Original Image", image)
    cv.imshow("Upscaled (2x)", result1)
    cv.imshow("Downscaled (0.5x)", result2)
    cv.imshow("Scaled (0.75x)", result3)

    # 等待按键退出
    cv.waitKey(0)
    cv.destroyAllWindows()

# 调用函数
resize_demo()

图像放缩方法

方法1:按目标尺寸调整大小

result1 = cv.resize(image, (w * 2, h * 2), interpolation=cv.INTER_NEAREST)
  • cv.resize:调整图像大小。
    • (w * 2, h * 2):指定目标尺寸(宽、高)。
    • cv.INTER_NEAREST:最近邻插值方法,快速但图像可能较为锯齿化。

方法2:按目标尺寸缩小

result2 = cv.resize(image, (w // 2, h // 2), interpolation=cv.INTER_NEAREST)
  • 将目标尺寸设置为原图的宽高各一半,实现图像缩小。

方法3:使用缩放因子

result3 = cv.resize(image, (0, 0), fx=0.75, fy=0.75, interpolation=cv.INTER_NEAREST)
  • 设置 fxfy 分别表示水平方向和垂直方向的缩放因子。
  • 当目标尺寸为 (0, 0) 时,fxfy 会直接控制最终的缩放大小。

插值方法解析

常用插值方法

  1. cv.INTER_NEAREST(最近邻插值)
    • 最简单、最快速的插值方法。
    • 图像可能出现锯齿或块状效果,适用于简单场景。
  2. cv.INTER_LINEAR(双线性插值,默认值)
    • 在放缩过程中计算像素的加权平均值。
    • 通常用于实时图像处理,性能与效果平衡。
  3. cv.INTER_CUBIC(双三次插值)
    • 基于像素周围的 4×4 像素块进行插值。
    • 图像质量更高,但计算开销较大。
  4. cv.INTER_LANCZOS4(Lanczos 插值)
    • 使用像素周围的 8×8 像素块进行插值。
    • 适合对质量要求较高的静态图像处理。

应用场景

  1. 图像增强
    • 放大图像时,可以结合插值算法提升图像质量。
  2. 数据预处理
    • 将不同分辨率的图像统一到相同大小,以适配深度学习模型。
  3. 分辨率调整
    • 在图像显示或存储时,调整大小以优化资源使用。

运行效果

图片[1]-OpenCV-Python快速入门系列19图像放缩与插值-天煜博客
© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容