Python OpenCV图片缩放详解:cv2.resize函数用法与插值算法
本文详细介绍OpenCV中cv2.resize函数的使用方法,涵盖输入输出参数、尺寸格式及五种插值算法(最近邻、双线性、区域、双三次、Lanczos)。通过Python代码示例演示如何指定输出尺寸或使用缩放系数进行图像缩放,并解析默认插值方式,帮助开发者掌握高效处理图像尺寸的技巧。
cv2.resize函数原型与参数解析
OpenCV中用于图像缩放的核心函数原型如下:
cv2.resize(InputArray src, OutputArray dst, Size, fx, fy, interpolation)
该函数的主要参数包括:输入图像src、输出图像dst、目标尺寸Size、沿x轴和y轴的缩放系数fx与fy,以及指定插值方式的interpolation参数。
| InputArray src | 输入图片 |
| OutputArray dst | 输出图片 |
| Size | 输出图片尺寸 |
| fx, fy | 沿x轴,y轴的缩放系数 |
| interpolation | 插入方式 |
常用插值算法详解
interpolation参数可选的插值方法包括:INTER_NEAREST(最近邻插值)、INTER_LINEAR(双线性插值,默认选项)、INTER_AREA(像素区域关系重采样,适合缩小)、INTER_CUBIC(4x4像素邻域的双三次插值)以及INTER_LANCZOS4(8x8像素邻域的Lanczos插值)。
|
INTER_NEAREST |
最近邻插值 |
|
INTER_LINEAR |
双线性插值(默认设置) |
|
INTER_AREA |
使用像素区域关系进行重采样。 |
|
INTER_CUBIC |
4x4像素邻域的双三次插值 |
|
INTER_LANCZOS4 |
8x8像素邻域的Lanczos插值 |
使用注意事项
在使用cv2.resize时需注意以下关键点:
首先,输出尺寸Size的格式为(宽,高),即先指定宽度再指定高度。
其次,若不指定Size而仅使用fx和fy,则默认采用双线性插值方法进行缩放。
以下代码演示了如何使用cv2.resize进行图像缩放操作:
Python代码实现示例
import cv2 as cv
# 读入原图片
img = cv.imread('test.jpg')
# 打印出图片尺寸
print(img.shape)
# 将图片高和宽分别赋值给x,y
x, y = img.shape[0:2]
# 显示原图
cv.imshow('OriginalPicture', img)
# 缩放到原来的二分之一,输出尺寸格式为(宽,高)
img_test1 = cv.resize(img, (int(y / 2), int(x / 2)))
cv.imshow('resize0', img_test1)
cv.waitKey()
# 最近邻插值法缩放
# 缩放到原来的四分之一
img_test2 = cv.resize(img, (0, 0), fx=0.25, fy=0.25, interpolation=cv.INTER_NEAREST)
cv.imshow('resize1', img_test2)
cv.waitKey()
cv.destroyAllWindows()



希望以上内容能帮助您更好地理解OpenCV图片缩放功能,欢迎继续支持本站获取更多技术资源。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









