机器学习貌似很火的样子,因为用到SVM需要大量标记样本,人工标注往往费时费力,不得不考虑机器标注获取样本点的坐标位置。
常用的方法有两种:
(1)ginput()函数
ginput提供了一个十字光标定位所需要的像素点位置,并返回坐标值。函数调用形式为:
[x,y] = ginput(n);%读取n个点,可以按回车提前结束读数
[x,y] = ginput;%无限的读取坐标直到按下回车键
[x,y,button] = ginput(...);%button值(1=左键,2=中,3=右)或者按键的ASXII码值。
得到的x,y为连续选点的坐标向量,可直接保存成mat文件,很方便,但是ginput在使用的时候图像是被固定住的,无法放大,有些精确性的像素无法准确标注。
(2)利用figure的WindowButtonDownFcn属性。当你在图上按下鼠标的时候,可通过该属性定义一个回调程序
% 主函数
function test_mouse_track()
in = imread(inName);
figure,imshow(in);
sample = zeros(0,2);
save sample sample;
set(gcf,'WindowButtonDownFcn',@ButttonDownFcn);
% 回调函数
function [x,y]=ButttonDownFcn(src,event)
load('sample.mat');
pt = get(gca,'CurrentPoint');
x