OpenCV库学习之cv2.resize函数

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 参数可以指定新的图像尺寸,如果 fxfy 同时被指定,则 dsize 将被忽略。
  • 不同的插值方法对图像质量有不同的影响,cv2.INTER_LINEAR 是默认方法,适用于缩放和旋转;cv2.INTER_NEAREST 是最快的方法,但可能会产生锯齿状边缘;cv2.INTER_CUBIC 适合高质量的图像缩放。
  • 如果 dsize 中的宽度或高度为0,则该维度的大小将按照比例计算。
  • 在使用 cv2.resize 时,确保图像路径正确,且图像文件存在,否则会抛出错误。
相关推荐
handler014 小时前
从源码到二进制:深度拆解 Linux 下 C 程序的编译与链接全流程
linux·c语言·开发语言·c++·笔记·学习
电子云与长程纠缠4 小时前
UE5 两种方式解决Decal Actor贴花拉伸问题
学习·ue5·游戏引擎
red_redemption4 小时前
自由学习记录(172)
学习·cache line 64b·重用距离
阿荻在肝了5 小时前
Agent学习六:LangGraph学习-持久化与记忆一
python·学习·agent
Allen正心正念20255 小时前
Model——文生图模型GPT-Image-2特性解析-20260420
人工智能·gpt·计算机视觉
一碗白开水一6 小时前
【目标跟踪综述】目标跟踪近3年技术研究,全面了解目标跟踪发展
人工智能·计算机视觉·目标跟踪
寒秋花开曾相惜7 小时前
(学习笔记)4.1 Y86-64指令集体系结构(4.1.4 Y86-64异常&4.1.5 Y86-64程序)
开发语言·jvm·数据结构·笔记·学习
莹宝思密达7 小时前
【AI学习】 playwright-cli + SKILL 替换 chrom-devTools-MCP
学习
cyr___7 小时前
Unity教程(二十七)技能系统 黑洞技能(下)黑洞状态
学习·游戏·unity·游戏引擎
懷淰メ7 小时前
【AI加持】基于PyQt+YOLO+DeepSeek的车型检测系统(详细介绍)
yolo·目标检测·计算机视觉·pyqt·项目设计·deepseek·车型检测