2013-05-19 2 views
2

Я хочу обрезать изображение, используя следующий код. но я хочу, чтобы пользователь мог выбрать область обрезки с предопределенным отношением x/y. Например, если x = 2, y = 2, тогда пользователь может использовать только мышь, чтобы выбрать область с отношением (x/y) = 1.Изображение обрезки с фиксированным соотношением x/y

I = imread('image.jpg'); 
[rows columns numberOfColorBands] = size(I); 
I2 = imcrop(I); 
imshow(I), figure, imshow(I2) 

ответ

3

Вы можете использовать imrect для получения координат, а затем передать их в imcrop.

figure, imshow(I); 
h = imrect(gca,[10 10 100 100]); 
setFixedAspectRatio(h,1); % this fixes the aspect ratio; user can now change size/position 
position = wait(h); % returns coordinates in "position" when user doubleclicks on rectangle 
I2 = imcrop(I,position); 
figure, imshow(I2); 

В реальном коде, вы должны заменить [10 10 100 100] с чем-то соответствующего соотношения размер/аспект для ваших изображений. Возможно, вы захотите добавить другие ограничения для исправления (например, чтобы пользователь не перемещал прямоугольник за пределами фактического изображения).

+0

Большое вам спасибо – jafari

+1

setFixedAspectRatioMode - это правильная функция для фиксации отношения. Мне потребовалось некоторое время, чтобы выяснить, что не так – user3662662

Смежные вопросы