2016-03-22 12 views
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); 

任意の画像を例として使用することができます。

+1

これは、奇数番号の画像の場合にのみ発生すると想定しています。ピクセルを半分に分割することはできません。 – hbaderts

+0

ありがとう!私は '[x、y] = size(I)'ではsize()の戻り値が3次元だが、2次元[x、y]を使って受け取るので、値yは違う。 –

答えて

0

sizeから2つの出力のみを要求すると、最初の出力として最初の次元が返され、他のすべての次元の出力が2番目の出力として返されます。データの実際の次元が何であるかは気にしません。

あなたの場合、RGB画像を使用しているため、明示的な寸法をsizeの2番目の入力として指定することをお勧めします。これにより、あなたが望む次元を得ることができます。

nRows = size(I, 1); 
nCols = size(I, 2); 

A = imcrop(I, [0 0 nRows round(nCols/2)]); 

は一般的に、私は希望通りの寸法を得ることを保証するために、定期的にsizeに寸法入力を使用しています。

関連する問題