26.java openCV4.x 入门-Imgproc之图像尺寸调整与区域提取

|---------------------------------------------|-------------------------------------------------------------|-----------------------------------------------------------------------|
| 专栏简介 |||
| 💒个人主页 | 📖心灵鸡汤📖 我们唯一拥有的就是今天,唯一能把握的也是今天 建议把本文当作笔记来看,据说专栏目录里面有相应视频🤫 | 📰专栏目录 |

@TOC

一、尺寸调整

1.字段

仅列举部分。

|---------------|--------------------------------------------|
| INTER_AREA | 使用像素关系重采样算法,对于缩小图像来说效果较好 |
| INTER_CUBIC | 使用双三次插值算法,对于缩放图像时效果较好 |
| INTER_LINEAR | 使用线性插值算法,对于缩放图像来说效果较好 |
| INTER_NEAREST | 使用最近邻插值算法,对于放大图像来说效果较好(相对清晰,不过过大时像素块会比较明显) |

2.方法说明

resize 调整图像 src 的大小,使其缩小或放大到指定的大小。

|---------------|-------------------------------------------------------------------------------------------------------|
| resize​(Mat src, Mat dst, Size dsize, double fx, double fy, int interpolation) ||
| 参数: ||
| src | 输入图像. |
| dst | 输出图像;如果 dsize 非零,则输出图像的大小为 dsize,否则由 src.size()、fx 和 fy 计算得出;dst 的类型与 src 相同. |
| dsize | 输出图像的大小;如果它等于零.则计算为:dsize = Size(round(fx*src.cols), round(fy*src.rows))。dsize 或者 fx 和 fy 必须至少有一个非零 |
| fx | 沿水平轴的缩放因子;当它为 0 时,计算为 (double)dsize.width/src.cols. |
| fy | 沿垂直轴的缩放因子;当它为 0 时,计算为 (double)dsize.height/src.rows. |
| interpolation | 插值方法.参见INTER_* |

要缩小图像,通常使用 #INTER_AREA 插值会得到最佳效果;而要放大图像,则通常使用 #INTER_CUBIC(较慢但效果好)或 #INTER_LINEAR(较快且效果也不错)插值会得到最佳效果

java 复制代码
        Mat imread = Imgcodecs.imread("flip.jpg");

        Mat dst = new Mat();
        Imgproc.resize(imread,dst,new Size(),2,2,Imgproc.INTER_LINEAR_EXACT);
        HighGui.imshow("imread",imread);
        HighGui.imshow("dst",dst);
        HighGui.waitKey();

结果

imread dst

二、 矩形区域提取

|-----------|--------------------------------------------|
| getRectSubPix(Mat image, Size patchSize, Point center, Mat patch, int patchType) ||
| 参数: ||
| image | 输入图像. |
| patchSize | 提取的矩形区域的大小 |
| center | 提取的矩形区域的中心点的浮点坐标。中心必须在图像内 |
| patch | 输出的提取的矩形区域 .其大小为 patchSize,与 src 具有相同数量的通道 |
| patchType | 输出矩阵的数据类型 .默认情况下,与 src 相同 |

该函数从src中提取像素,其表达式为:
p a t c h ( x , y ) = s r c ( x + center.x − ( dst.cols − 1 ) ∗ 0.5 , y + center.y − ( dst.rows − 1 ) ∗ 0.5 ) patch(x, y) = src(x + \texttt{center.x} - ( \texttt{dst.cols} -1)*0.5, y + \texttt{center.y} - ( \texttt{dst.rows} -1)*0.5) patch(x,y)=src(x+center.x−(dst.cols−1)∗0.5,y+center.y−(dst.rows−1)∗0.5)

其中非整数坐标的像素值通过双线性插值获得。多通道图像的每个通道都独立处理。图像应为单通道或三通道图像。矩形的中心必须在图像内,但矩形的部分可能位于图像之外。

java 复制代码
        Imgproc.getRectSubPix(imread,new Size(50,50),new Point(imread.cols()/2,imread.rows()/2),patch,-1);

请自行验证

|-------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------|
| 万水千山总是情,本栏完全公开免费。 ||
| 上一篇:Imgproc之点集最小面积外接 | 下一篇:Imgproc之图像线性混合 |

相关推荐
逻极2 小时前
Kiro 安全最佳实践:守护代理式 IDE 的 “防火墙”
ide·人工智能·安全·ai
Danceful_YJ2 小时前
23.目标检测基础
人工智能·目标检测·计算机视觉
央链知播2 小时前
何超谈“AI元宇宙将引领场景革命 “十五五”勾勒科技新蓝图”
人工智能·科技
脸大是真的好~2 小时前
黑马JAVAWeb - SpringAOP
java
moxiaoran57532 小时前
RestTemplate使用示例
java
Gogo8162 小时前
从 Spring Boot 到 NestJS:模块化设计的哲学差异
java·后端·nestjs
CV视觉2 小时前
AI 实战篇:用 LangGraph 串联 RAG+MCP Server,打造能直接操控 Jira 的智能体
人工智能·深度学习·机器学习·自然语言处理·langchain·prompt·jira
骄傲的心别枯萎2 小时前
RV1126 NO.42:OPENCV形态学基础之一:膨胀
人工智能·opencv·计算机视觉
亚马逊云开发者2 小时前
Agentic AI基础设施实践经验系列(五):Agent应用系统中的身份认证与授权管理
人工智能