我想使用以下代码裁剪图像。但我希望用户只能选择具有预定义x / y比率的裁剪区域。例如,如果x = 2,y = 2,则用户只能使用鼠标选择(x / y)= 1比率的区域。
I = imread('image.jpg');
[rows columns numberOfColorBands] = size(I);
I2 = imcrop(I);
imshow(I), figure, imshow(I2)
答案 0 :(得分: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]。您可能希望添加其他约束以进行更正(例如,阻止用户将矩形移动到实际图像之外)。