Matlab 使用imcrop将图像分割为两半
我想使用Matlab 使用imcrop将图像分割为两半,matlab,Matlab,我想使用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请求两个输出,则它将返回真实的第一个维度作为第一个输出,并返回所有其他维度的乘积作为第二个输出。它不关心数据的实际维度是什么 在您的情况下,您有
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)]);
一般来说,我会定期使用尺寸输入来调整尺寸,以确保得到所需的尺寸。我假设这种情况只发生在奇数宽度的图像上,对吗?你不能把一个像素分成两半。谢谢!我了解到这是因为在“[x,y]=size(I)”中,size()的返回值有3维,但我使用2维[x,y]来接收,因此值y是错误的。