📄 sho22w.m
字号:
function show(I,M)%show - show content aware image resizing%% show(I,M) opens a figure window to allow interactive resizing of I% in one direction based on the seam removal map M.%% See also removalMap.% figure out if seams are horizontal or vertical[h,w] = size(M);horiz = all(sum(M,1)==sum(1:h))vert = all(sum(M,2)==sum(1:w))if ~xor(horiz,vert), error('seams not horizontal or vertical?!'); endfh = figure; clf;set(fh,'DoubleBuffer','on');set(fh,'WindowButtonDownFcn',@mouseDown);set(fh,'WindowButtonMotionFcn',@mouseMove);set(fh,'WindowButtonUpFcn',@mouseUp);set(fh,'WindowScrollWheelFcn',@mouseWheel);% set(fh,'Interruptible','off');% set(fh,'BusyAction','queue');if horiz, ih = imshow(cat(1,I,I)); title('horizontal seams');else ih = imshow(cat(2,I,I)); title('vertical seams');endset(ih,'CData',I);if ~horiz, I = permute(I,[2,1,3]); M = M';end[h,w] = size(M);n = 0; % how many seams we are removing % remove an additional dn seams function move(dn) n = n + dn; if n >= 0, % shrink image if horiz, set(ih,'CData',shrink(I,M,n)); else set(ih,'CData',permute(shrink(I,M,n),[2,1,3])); end else % grow image if horiz, set(ih,'CData',expand(I,M,-n)); else set(ih,'CData',permute(expand(I,M,-n),[2,1,3])); end end drawnow; endp0 = []; % location of mouse down eventdrag = false; % is the mouse being dragged?moving = false; % are we moving the image? function mouseDown(src,evt) p0 = get(fh,'CurrentPoint'); drag = true; end function mouseMove(src,evt) if ~drag, return; end if moving, return; end % serialize execution of this function moving = true; p = get(fh,'CurrentPoint'); if horiz, move( p(2) - p0(2) ); else move( p0(1) - p(1) ); end p0 = p; moving = false; end function mouseWheel(src,evt) move( -evt.VerticalScrollCount * evt.VerticalScrollAmount ); end function mouseUp(src,evt) drag = false; endend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -