2016-03-22 25 views
0

Bir resmi ikiye bölmek için imcrop kullanmak istiyorum. Ancak sonuç resmin tam olarak yarısı değil. Sorun nedir? Bir resmi ikiye bölmek için imcrop kullanın

kod

burada:

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); 

Herhangi resim örnek olarak kullanılabilir.

+1

Bunun yalnızca tek sayılı genişlikli resimler için gerçekleştiğini farz ediyorum, bu doğru mu? Bir pikseli yarıya bölemezsin. – hbaderts

+0

Teşekkürler! Bunun, '[x, y] = boyut (I)' cinsinden, boyut() 'nın dönüş değeri 3 boyuta sahip olduğunu ancak 2 boyutunu [x, y] kullanacağımı, dolayısıyla y değerinin olduğunu öğrendim yanlış. –

cevap

0

Yalnızca size'dan iki çıktı talep ederseniz, ilk çıktı olarak gerçek ilk boyutu döndürür ve diğer tüm boyutların ürünlerini ikinci çıkış olarak döndürür. Verilerinizin gerçek boyutunun ne olduğu umurumda değil.

Sizin durumda, bir RGB resminiz var, bu nedenle açık bir boyutun size'a ikinci giriş olarak belirtilmesi önerilir. Bu, istediğiniz boyuta sahip olmanızı sağlayacaktır.

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

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

Genel olarak, ben tam olarak istediğiniz boyut elde etmelerini sağlamak için düzenli olarak size için boyut girişini kullanmak.

İlgili konular