|---------------------------------------------|-------------------------------------------------------------|-----------------------------------------------------------------------|
| 专栏简介 |||
| 💒个人主页 | 📖心灵鸡汤📖 我们唯一拥有的就是今天,唯一能把握的也是今天 建议把本文当作笔记来看,据说专栏目录里面有相应视频🤫 | 📰专栏目录 |
@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之图像线性混合 |

