对于我的项目,我需要很多图片来提取投资返回率。当我的项目开始时,我想要显示一张图片,然后用户选择他/她想要的投资返回率。函数 imrect
似乎就是这样做的。我试图在拖动或调整大小后获取矩形的坐标。问题是返回的值似乎不正确。
我似乎找不到问题所在,相关问题也没有帮助。我尝试使用 imcrop
,但无法做得更好...
function [ new_image ] = getRoi(image)
rect = size(image);
rect = round(rect ./2);
figure, imshow(image);
h = imrect(gca, [5 5 rect(2) rect(1)]);
addNewPositionCallback(h,@(p) title(mat2str(p,3)));
fcn = makeConstrainToRectFcn('imrect',get(gca,'XLim'),get(gca,'YLim'));
accepted_pos = wait(h);
setPositionConstraintFcn(h,fcn);
%getPositionConstraintFcn(h);
pos = getPosition(h);
if round(pos(1)) < round(pos(2))
X1 = round(pos(1))
X2 = round(pos(2))
else
X1 = round(pos(2))
X2 = round(pos(1))
end
if round(pos(3)) < round(pos(4))
Y1 = round(pos(3))
Y2 = round(pos(4))
else
Y1 = round(pos(4))
Y2 = round(pos(3))
end
new_image = image(Y1:Y2, X1:X2);
%name = strcat('Roi_', datestr(clock, 'yyyymmddTHHMMSS'),'.png');
%prtIm(new_image, name, '-s');
new_image = image;
end
最佳答案
getPosition
返回[xmin, ymin, width, height]
。要获取您想要的坐标,请尝试
X1 = round(pos(1));
Y1 = round(pos(2));
X2 = round(X1 + pos(3));
Y2 = round(Y1 + pos(4));
关于matlab - 使用Matlab的imrect获取新矩形的坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20080179/