0
我想使用imcrop
将图像分成一半。但是,结果并不完全是图片的一半。问题是什么?使用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);
任何图片可以被用作一个例子。
我想使用imcrop
将图像分成一半。但是,结果并不完全是图片的一半。问题是什么?使用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);
任何图片可以被用作一个例子。
如果您只请求size
的两个输出,那么它将返回第一个真实的维度作为第一个输出,并返回所有其他维度的乘积作为第二个输出。它并不关心数据的实际维度。
对于您的情况,您有RGB图像,因此建议将明确尺寸指定为size
的第二个输入。这将确保您获得所需的维度。
nRows = size(I, 1);
nCols = size(I, 2);
A = imcrop(I, [0 0 nRows round(nCols/2)]);
一般情况下,我使用的尺寸输入定期size
,以确保我得到正是我想要的尺寸。
我认为这只发生在奇数宽度的图像上,是吗?你不能将一个像素分成两半。 – hbaderts
谢谢!我知道这是因为在'[x,y] = size(I)'中,size()的返回值有3维,但我使用2维[x,y]来接收,所以y的值是错误。 –