opencv图像放缩与插值-resize函数

在OpenCV中,resize函数用于对图像进行尺寸调整(放大或缩小),这个过程中通常需要用到插值方法来计算新尺寸下图像像素的值。插值方法对于放缩的质量有着直接影响。

cpp 复制代码
void resize(InputArray src, OutputArray dst, Size dsize, double fx = 0, double fy = 0, int interpolation = INTER_LINEAR);

src:输入图像。

dst:输出图像。尺寸由dsize指定,或者通过fx和fy与源图像的相对关系确定。

dsize:输出图像的尺寸。如果为零,则通过fx和fy计算得出。

fx和fy:沿x轴和y轴的比例因子。如果dsize非零,则这两个参数被忽略。

interpolation:插值方法。OpenCV提供了多种插值方法,常用的包括INTER_LINEARINTER_NEARESTINTER_AREA等。

插值方法

复制代码
INTER_NEAREST:最近邻插值,速度最快,但质量最低,适用于图像缩小。
INTER_LINEAR:双线性插值,速度和质量之间的折中选择,适用于图像放大和缩小,是默认方法。
INTER_AREA:区域插值,适用于图像缩小,优于INTER_NEAREST,在缩小图像时推荐使用。
INTER_CUBIC:三次插值,质量比INTER_LINEAR更好,但速度更慢,适用于图像放大。
INTER_LANCZOS4:Lanczos插值,使用4x4邻域,提供高质量的结果,适用于图像放大和缩小,但速度最慢。

注:在实际应用中,应该根据具体需求选择合适的插值方法。例如,对于图像缩小,INTER_AREA提供了较好的结果;而对于图像放大,INTER_CUBIC或INTER_LANCZOS4可能更适合。

例子

cpp 复制代码
void QuickDemo::resize_demo(Mat &image) {
	Mat zoomin, zoomout;
	int h = image.rows;
	int  w = image.cols;
	resize(image, zoomin, Size(w / 2, h / 2), 0, 0, INTER_LINEAR);//图像放缩与插值
	imshow("zoomin", zoomin);
	resize(image, zoomout, Size(w*1.5, h *1.5), 0, 0, INTER_LINEAR);//图像放缩与插值
	imshow("zoomout", zoomout);
}
相关推荐
2301_76444133几秒前
Helios:14B实时长视频生成模型
人工智能·音视频
云蝠呼叫大模型联络中心5 分钟前
金融行业大模型呼叫系统架构与API集成案例
人工智能·金融·系统架构·多智能体协同·voiceagent·云蝠智能·ai agent技术
Tony Bai5 分钟前
【AI 智能体时代的软件工程】11 双态工作台:为何我们需要为 AI 重构 IDE?
ide·人工智能·重构
hf2000126 分钟前
当千亿数据遇上增量计算:拆解云器科技与快手的技术共创——从快手GIC实践,看新一代数据处理范式的真实落地
大数据·人工智能·科技
tobias.b6 分钟前
深度学习 超清晰通俗讲解 + 核心算法 + 使用场景
人工智能·深度学习·算法
东离与糖宝8 分钟前
创作Agent 2.0升级:接入Seedance 2.0,支持“养虾“调用
人工智能
落羽的落羽9 分钟前
【Linux系统】中断机制、用户态与内核态、虚拟地址与页表的本质
java·linux·服务器·c++·人工智能·算法·机器学习
telllong10 分钟前
Termux:在手机上跑Python AI应用的真实体验
人工智能·python·智能手机
云智慧AIOps社区11 分钟前
AI驱动制造业智能化变革:云智慧在苏州CIO研讨会分享运维破局之道
运维·人工智能·aiops·ai agent·sre·sre 智能体
liangdabiao12 分钟前
【开源】创业SKILL-用户需求洞察与产品机会分析-适用于新产品
人工智能