function [rect_pos] = Crop_it2(I)
r=size(I,1);
c=size(I,2);
Screen_size = get(0,'ScreenSize');
min_Screen_size = min(Screen_size(3:4));
diag_Screen_size = round(sqrt(2*min_Screen_size.^2));
scale_screen = diag_Screen_size/4;
d=sqrt(r.^2+c.^2);
scale_fig = (scale_screen/d);
figure, imshow(I);
rect_pos_fig = get(gcf,'position');
rect_pos_fig(3) = round(c*scale_fig);
rect_pos_fig(4) = round(r*scale_fig);
set(gcf,'Units','pixels')
set(gcf,'position',rect_pos_fig);
set(gca,'position',[0 0 1 1]);
plotedit on
h1=annotation('rectangle',[0 0 0.4 0.4]);
set(h1,'EdgeColor','r','LineStyle','-','LineWidth',2);
if(size(I,3)>1 && scale_fig>1)
set(h1,'FaceAlpha',.2,'FaceColor','yellow');
end
set(gcf,'DeleteFcn',{@myCallback,I,h1});
waitfor(h1);
rect_pos=get(0,'UserData');
return;
function myCallback(src,eventdata,I,h1)
r=size(I,1);
c=size(I,2);
rect_pos = get(h1,'position');
rect_pos = (floor(rect_pos.*[c r c r]))+1;
rect_pos(2) = r - (rect_pos(2) + rect_pos(4));
rect_pos
try
I2=imcrop(I,rect_pos);
catch
I2=myCrop(I,rect_pos);
end
figure, imshow(I2); colormap gray;
set(gca,'position',[0 0 1 1]);
set(0,'UserData',rect_pos);
function I2 = myCrop(I,rect)
m = size(I,1);
n = size(I,2);
pixelHeight = rect(4);
pixelWidth = rect(3);
r1 = round(rect(2) + 1 );
c1 = round(rect(1) + 1 );
r2 = round(rect(4) + r1);
c2 = round(rect(3) + c1);
if ((r1 > m) || (r2 < 1) || (c1 > n) || (c2 < 1))
b = [];
else
r1 = max(r1, 1);
r2 = min(r2, m);
c1 = max(c1, 1);
c2 = min(c2, n);
I2 = I(r1:r2, c1:c2, :);
end
return;
0 Comments
Sign in to comment.