涉及鼠标的回调函数,参数适用全局变量来记录。
注意:1. 全局变量时需先声明;2. 左右键分别代表一类; 3. 计算涉及的区域占据的superpixels
global bg; % 全局变量 记录鼠标划过的背景像素
global fg; % 全局变量 记录鼠标划过的前景景像素
global bg_num ;
global fg_num ;
bg_num = 0;
fg_num = 0;
img = imread('img_view.jpg');
figure;
imshow(img); hold on
set(gcf,'WindowButtonDownFcn',@ButtonDownFcn); % 鼠标按下的响应
set(gcf,'WindowButtonUpFcn',@ButtonUpFcn); % 鼠标放下的响应
a=input('Any character end'); % 等待输入完成
function ButtonDownFcn(~,~)
set(gcf,'WindowButtonMotionFcn',@ButtonMotionFcn); % 设置鼠标移动响应
end
function ButtonUpFcn(src,event)
set(gcf, 'WindowButtonMotionFcn', ''); % 取消鼠标移动响应
end
function [x,y] = ButtonMotionFcn(~,~)
global bg;
global fg;
global bg_num;
global fg_num;
left = 0;
right = 0;
pt = get(gca,'CurrentPoint');
if strcmp(get(gcf,'SelectionType'),'alt')
left = 1;
elseif strcmp(get(gcf,'SelectionType'),'normal')
right = 1;
end
x = pt(1,1);
y = pt(1,2);
if left == 1
line(x, y, 'marker', '.', 'EraseMode', 'normal','Color',[.6 0 0]);
bg_num = bg_num +1;
bg(bg_num,:) = [x,y];
elseif right == 1
line(x, y, 'marker', '.', 'EraseMode', 'normal');
fg_num = fg_num +1;
fg(fg_num,:) = [x,y];
end
end
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。