OpenCV: 图像缩放(cv2.resize)【一分钟弄清楚】

07-16 1366阅读

OpenCV: 图像缩放(cv2.resize)【一分钟弄清楚】

OpenCV: 图像缩放(cv2.resize)【一分钟弄清楚】

🌈 个人主页:高斯小哥

🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程 👈 希望得到您的订阅和支持~

💡 创作高质量博文,分享更多关于深度学习、PyTorch、Python领域的优质内容!(希望得到您的关注~)


🌵文章目录🌵

  • 一、cv2.resize()函数简介
    • 示例代码
    • 注意事项
    • 二、cv2.resize()函数实战
      • 需求场景
      • 生成初始图像
      • 将初始图像的【高】放大一倍(384 --> 768)
      • 三、最后 🤝

          在图像处理和计算机视觉应用中,图像缩放是一个常见的操作。OpenCV库中的cv2.resize()函数是一个非常实用的工具,可以轻松地实现这一功能。本文将为你介绍如何使用cv2.resize()来缩放图像,让你在一分钟内掌握这个技能!


        一、cv2.resize()函数简介

        cv2.resize()函数用于调整图像的尺寸。它的基本语法如下:

        cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]])
        

        参数说明:

        • src: 输入图像。
        • dsize: 输出图像的尺寸,可以是一个单元素的元组(仅指定宽度),或者两个元素的元组(宽度和高度)。
        • fx 和 fy: 缩放因子,分别表示宽度和高度的缩放比例。如果未指定,则使用dsize参数。
        • interpolation: 插值方法,用于确定像素值。常用的插值方法有cv2.INTER_LINEAR(线性插值)、cv2.INTER_NEAREST(最近邻插值)等。

          示例代码

          下面是一个简单的示例,展示如何使用cv2.resize()函数将图像缩小为原尺寸的一半:

          import cv2
          # 读取图像
          img = cv2.imread('input.jpg')
          # 缩小图像尺寸为原尺寸的一半
          height, width = img.shape[:2]
          new_size = (width // 2, height // 2)
          resized_img = cv2.resize(img, new_size, interpolation=cv2.INTER_LINEAR)
          # 显示原图和缩放后的图像
          cv2.imshow('Original Image', img)
          cv2.imshow('Resized Image', resized_img)
          cv2.waitKey(0)
          cv2.destroyAllWindows()
          

          注意事项

          在使用cv2.resize()函数时,需要注意以下几点:

          1. 确保输入图像是有效的,并且尺寸与期望的输出尺寸相匹配。否则,可能会导致错误或不可预测的结果。
          2. 根据需要选择合适的插值方法。不同的插值方法可能会对结果产生影响,特别是在放大图像时。
          3. 确保安装了正确版本的OpenCV库。不同版本的OpenCV可能在函数使用和参数上略有差异。

          二、cv2.resize()函数实战

          需求场景

          欲对高为384,宽为512的图像进行放大或缩小。

          生成初始图像

          代码如下:

          import cv2
          import numpy as np
          # 生成初始图像
          img = np.zeros((384, 512), dtype=np.uint8) 
          img[172:212, 32:-32] = 255
          print(img.shape) # (高,宽) ---> (384, 512)
          cv2.imshow('img', img)
          cv2.waitKey(0)
          

          运行结果如下:

          OpenCV: 图像缩放(cv2.resize)【一分钟弄清楚】

          图1 运行结果

          将初始图像的【高】放大一倍(384 --> 768)

          代码如下:

          import cv2
          import numpy as np
          # 生成初始图像
          img = np.zeros((384, 512), dtype=np.uint8)
          img[172:212, 32:-32] = 255
          H, W = img.shape # img.shape 分别记录了图像的【高】和【宽】 --> 【高前宽后】
          print("before", H, W) # 384 512
          # 可行的方案1 ———— 使用cv2.resize函数的dsize参数指定输出图像的宽高
          # dsize的第一个参数指定的是输出图像的【宽】,第二个才是【高】 --> 【宽前高后】
          # --> 与img.shape正好相反,使用cv2.resize函数的dsize参数需要特别注意。
          img = cv2.resize(img, dsize=(W, H*2)) # 注意dsize参数的使用方式
          # 可行的方案2 ———— 使用cv2.resize函数的fy参数
          # 要点1: fy=2表示沿着y轴(高)方向放大一倍;
          # 要点2: fx=1虽然没有起到作用,但不可省略;
          # 要点3: dsize参数必须设置为None;
          img = cv2.resize(img, dsize=None, fx=1, fy=2)) # 沿着高的方向将初始图像放大一倍
          # fx = 2, fy = 1 ---> 宽放大一倍,高保持不变
          # fx = 0.5, fy = 1 ---> 宽缩小为原来1/2,高保持不变
          # fx = 1, fy = 0.5 ---> 高缩小为原来1/2,宽保持不变
          # 打印新图像大小
          new_H, new_W = img.shape
          print("after", new_H, new_W) # 768 512
          # 显示图像
          cv2.imshow('img', img)
          cv2.waitKey(0)
          

          运行结果如下:

          OpenCV: 图像缩放(cv2.resize)【一分钟弄清楚】

          OpenCV: 图像缩放(cv2.resize)【一分钟弄清楚】

          图2 运行结果


          三、最后 🤝

            亲爱的读者,感谢您每一次停留和阅读,这是对我们最大的支持和鼓励!🙏在茫茫网海中,您的关注让我们深感荣幸。您的独到见解和建议,如明灯照亮我们前行的道路。🌟若在阅读中有所收获,一个赞或收藏,对我们意义重大。

            我们承诺,会不断自我挑战,为您呈现更精彩的内容。📚有任何疑问或建议,欢迎在评论区畅所欲言,我们时刻倾听。💬让我们携手在知识的海洋中航行,共同成长,共创辉煌!🌱🌳感谢您的厚爱与支持,期待与您共同书写精彩篇章!

            您的点赞👍、收藏🌟、评论💬和关注💖,是我们前行的最大动力!

            🎉 感谢阅读,祝你编程愉快! 🎉

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]