How can I save the coordinates from ginput()?
2 次查看(过去 30 天)
显示 更早的评论
I want to get the bounding boxes of two buttons on a screen.
I would like to write a loop with ginput such that for each button, I want to get input (ginput) from the mouse for four points, which will form the bounding box for the buttons. Something like:
for 1:3; %For 3 buttons
[x,y] = ginput(4) %Get the mouse input from 4 clicks (This forms the bouding box)
end
But this code is wrong because the third iteration will overwrite the coordinates that I got from the first and second iterations.
Also, I'd like to save these so that if I type in x(2), I get all the x coordinates for the second button. If I type in y(2), I get all the y coordinates for the second button.
Thank you!
回答(2 个)
Azzi Abdelmalek
2013-5-12
Use a cellarray
for k=1:3; %For 3 buttons
[ii,jj] = ginput(4)
x{k}=ii
y{k}=jj
end
2 个评论
Image Analyst
2013-5-12
Why not just use rbbox()??? That would be the more sensible way to draw a box around something than calling ginput(4). Here's the demo from the help:
uiwait(msgbox('Draw the box'));
k = waitforbuttonpress;
point1 = get(gca,'CurrentPoint'); % button down detected
finalRect = rbbox; % return figure units
point2 = get(gca,'CurrentPoint'); % button up detected
point1 = point1(1,1:2); % extract x and y
point2 = point2(1,1:2);
p1 = min(point1,point2); % calculate locations
offset = abs(point1-point2); % and dimensions
x = [p1(1) p1(1)+offset(1) p1(1)+offset(1) p1(1) p1(1)]
y = [p1(2) p1(2) p1(2)+offset(2) p1(2)+offset(2) p1(2)]
hold on
axis manual
plot(x,y)
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Data Exploration 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!