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);
}
相关推荐
冬奇Lab4 分钟前
一天一个开源项目(第105篇):Academic Research Skills - 学术研究全流程 AI 代理套件,及其工作流设计的启示
人工智能·开源·资讯
冬奇Lab6 分钟前
RAG 系列(二十一):性能优化——又快又省钱
人工智能·llm
Robot_Nav15 分钟前
深度学习与强化学习面试八股文知识点汇总
人工智能·深度学习·强化学习
Z1Y492Vn3ZYD9et3B0639 分钟前
李彦宏:今年小龙虾明年可能螃蟹,AI的杀手级产品还没定型
人工智能
啊哈哈121381 小时前
系统设计复盘:为什么 Agent 的 ReAct 循环必须内嵌确定性保护层——以 FitMind 健康助手的路由与步骤控制为例
人工智能·python·react
@蔓蔓喜欢你1 小时前
数据可视化入门:让你的数据说话
人工智能·ai
2401_832298101 小时前
破解智能体幻觉难题,OpenClaw思维链重构,夯实工业级执行可靠性
人工智能
沪漂阿龙1 小时前
面试题详解:检索链路设计全攻略——RAG 检索架构、查询理解、多路召回、混合检索、Rerank、上下文构造与评估闭环
大数据·人工智能·架构
金融小师妹1 小时前
基于AI通胀预期模型与美元流动性监测框架的黄金6周新低行分析:美元五连涨周期下贵金属定价机制重构研究
大数据·人工智能·重构·逻辑回归·线性回归
gaosushexiangji2 小时前
DIC系统推荐:基于千眼狼三维数字图像相关的无人机旋翼疲劳试验全场应变与位移测量
人工智能·算法