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()函数时,需要注意以下几点:
- 确保输入图像是有效的,并且尺寸与期望的输出尺寸相匹配。否则,可能会导致错误或不可预测的结果。
- 根据需要选择合适的插值方法。不同的插值方法可能会对结果产生影响,特别是在放大图像时。
- 确保安装了正确版本的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)
运行结果如下:
图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)
运行结果如下:
图2 运行结果三、最后 🤝
亲爱的读者,感谢您每一次停留和阅读,这是对我们最大的支持和鼓励!🙏在茫茫网海中,您的关注让我们深感荣幸。您的独到见解和建议,如明灯照亮我们前行的道路。🌟若在阅读中有所收获,一个赞或收藏,对我们意义重大。
我们承诺,会不断自我挑战,为您呈现更精彩的内容。📚有任何疑问或建议,欢迎在评论区畅所欲言,我们时刻倾听。💬让我们携手在知识的海洋中航行,共同成长,共创辉煌!🌱🌳感谢您的厚爱与支持,期待与您共同书写精彩篇章!
您的点赞👍、收藏🌟、评论💬和关注💖,是我们前行的最大动力!
🎉 感谢阅读,祝你编程愉快! 🎉