I=imread('图像名字(带扩展名及路径)');%首先读入一幅待裁剪的图像
I2=imcrop(I,[a b c d]);%利用裁剪函数裁剪图像,(a,b)表示裁剪后左上角像素在原图像中的位置;c表示裁剪后图像的宽,d表示裁剪后图像的高
[a b c d]对应[Xmin Ymin Width Height],Xmin是横向第1个像素x坐标,Ymin是纵向第1个像素y坐标;
以上介绍的原文链接:https://blog.csdn.net/u010603798/article/details/38681939
以上的介绍是有些错误的。
有1点易出错的地方想要补充:
图像块左上角像素(a,b)的确定是基于图像坐标系的,如下图:
x,y的范围是从1开始的,所以最小值是1,此处x,y和行列号正好是相反的,容易弄反。
举例:
我要裁剪的是左下角512*512的图块,如下:
输入代码:
A=imcrop(data,[1 89 512 512]);
裁剪结果:
显然,得到的不是512*512,实际应该将这个宽度和高度都减一。
A=imcrop(data,[1 89 511 511]);
更改后得到的变量范围就对了,如下图。打开原图的矩阵和裁剪后的矩阵发现裁剪结果正确。
关于宽和高度要减一,参考网站:
https://blog.csdn.net/shanchuan2012/article/details/50926205