OpenCV库学习之cv2.resize函数
一、简介
cv2.resize
是 OpenCV 库中的一个函数,用于改变图像的大小。这个函数非常灵活,支持不同的插值方法,可以根据需要放大或缩小图像,同时尽可能保持图像质量。
二、语法和参数
语法:
python
cv2.resize(src, dsize, fx, fy, interpolation)
参数:
src
: 原始图像矩阵。dsize
: 一个元组(width, height)
,表示输出图像的尺寸。fx
: 可选参数,水平方向的缩放因子。fy
: 可选参数,垂直方向的缩放因子。interpolation
: 插值方法,常见的有cv2.INTER_LINEAR
,cv2.INTER_CUBIC
,cv2.INTER_NEAREST
等。
返回值:
- 返回一个新的图像矩阵,其大小为
dsize
指定的尺寸。
三、实例
3.1 改变图像大小并保持比例
python
import cv2
# 读取图像
image = cv2.imread('example.jpg')
# 设置新的尺寸,保持原始比例
new_width = 500
ratio = new_width / image.shape[1]
new_height = int(image.shape[0] * ratio)
# 改变图像大小
resized_image = cv2.resize(image, (new_width, new_height), interpolation=cv2.INTER_AREA)
# 显示图像
cv2.imshow('Resized Image', resized_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
输出:
(图像窗口显示修改后的图像)
3.2 使用缩放因子改变图像大小
python
import cv2
# 读取图像
image = cv2.imread('example.jpg')
# 定义缩放因子
scale_factor = 0.5
# 改变图像大小
resized_image = cv2.resize(image, None, fx=scale_factor, fy=scale_factor, interpolation=cv2.INTER_LINEAR)
# 显示图像
cv2.imshow('Resized Image', resized_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
输出:
(图像窗口显示修改后的图像)
3.3 指定插值方法改变图像大小
python
import cv2
# 读取图像
image = cv2.imread('example.jpg')
# 设置新的尺寸
new_width, new_height = 800, 600
# 使用不同的插值方法
resized_image = cv2.resize(image, (new_width, new_height), interpolation=cv2.INTER_CUBIC)
# 显示图像
cv2.imshow('Resized Image', resized_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
输出:
(图像窗口显示修改后的图像)
四、注意事项
cv2.resize
函数可以改变图像的尺寸,但过度的放大可能会导致图像失真。dsize
参数可以指定新的图像尺寸,如果fx
和fy
同时被指定,则dsize
将被忽略。- 不同的插值方法对图像质量有不同的影响,
cv2.INTER_LINEAR
是默认方法,适用于缩放和旋转;cv2.INTER_NEAREST
是最快的方法,但可能会产生锯齿状边缘;cv2.INTER_CUBIC
适合高质量的图像缩放。 - 如果
dsize
中的宽度或高度为0,则该维度的大小将按照比例计算。 - 在使用
cv2.resize
时,确保图像路径正确,且图像文件存在,否则会抛出错误。