经常碰到matlab图像需要标注的情况,annotation可以很方便的加入线,箭头,方框等标注信息,但是箭头等位置需要用归一化的坐标来表示,如何转换呢?
matlab有一个函数叫dsxy2figxy,在自带的实例中,用来将dataspace的坐标转换到figure坐标(归一化),如果需要使用,必须添加path之后才可调用
addpath(fullfile(docroot,'techdoc','creating_plots','examples')); [figx,figy] = dsxy2figxy(x,y);经测试,对于图片(image,不是plot)坐标位置有误,因为图片的原点是左上角,而非左下角.这时就需要这样转换
axPos = get(gca,'Position'); xMinMax = xlim; yMinMax = ylim; n = size(b,1); % 图片高度 % 转换横坐标 figx = axPos(1) + ((x - xMinMax(1))/(xMinMax(2)-xMinMax(1))) * axPos(3); % 转换纵坐标,注意要先反转图片的上下(n-y),然后在转换 figy = axPos(2) + (((n-y) - yMinMax(1))/(yMinMax(2)-yMinMax(1))) * axPos(4);
No comments :
Post a Comment