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之图像线性混合 |

相关推荐
limuyang23 小时前
我在 2核2G 云主机上跑 OpenViking:一次关于云主机、模型选型与长期成本的真实复盘
人工智能·开源·ai编程
2301_780789664 小时前
跨平台适配!SDK 游戏盾兼容全终端游戏场景
java·网络·ddos
Shulex4 小时前
跨境电商 AI Agent 核心架构解析:从只读问答到自主执行的工程落地
人工智能·架构·智能客服·跨境电商
Java后端的Ai之路5 小时前
CAS并发控制-从CPU指令到企业级乐观锁
vue.js·人工智能·python·cas·乐观锁
情 九5 小时前
MCP 实战 06:把 HTTP 接口接成工具,让 AI 帮你查数据
人工智能·网络协议·http·mcp
学长毕设5 小时前
基于springboot的食品仓库管理系统
java·spring boot·后端
码农小旋风5 小时前
Ray分布式计算引擎介绍
人工智能·架构
火山引擎和TA的超级拍档们5 小时前
产品情报局 08 | AI 内容助手:全网热点驱动,一站式打通内容生产全链路
人工智能
Binovate缤江数智5 小时前
水泵远程开关之后,还需要管什么?数智开关在无人值守泵站中的监测、保护与能耗分析
人工智能·物联网