我想使用imcrop
将图片分成两半。但是,结果并不完全是图片的一半。有什么问题?
代码在这里:
I=imread('example.png');
[x,y]=size(I);
disp(x);
disp(y);
A = imcrop(I, [0 0 x y/2]);
[x1,y1]=size(A);
imshow(A);
任何图片都可以作为一个例子。
答案 0 :(得分:0)
如果您只请求size
的两个输出,那么它将返回真正的第一个维度作为第一个输出,并返回所有其他维度的乘积作为第二个输出。它并不关心数据的实际维度。
在您的情况下,您有一个RGB图像,因此建议将显式尺寸指定为size
的第二个输入。这将确保您获得所需的维度。
nRows = size(I, 1);
nCols = size(I, 2);
A = imcrop(I, [0 0 nRows round(nCols/2)]);
一般情况下,我会定期使用size
的尺寸输入来确保我得到我想要的尺寸。