How can I save the coordinates from ginput()?

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!

1 commentaire

Jake
Jake le 12 Mai 2013
Sorry, I want to get the bounding boxes of THREE buttons on a screen, or picutre

Connectez-vous pour commenter.

Réponses (2)

Azzi Abdelmalek
Azzi Abdelmalek le 12 Mai 2013
Use a cellarray
for k=1:3; %For 3 buttons
[ii,jj] = ginput(4)
x{k}=ii
y{k}=jj
end

2 commentaires

Jake
Jake le 12 Mai 2013
This does not work. It gives me the first x value, then for the second iteration it gives me the first x value and the 2nd x value. Same for y.
No, it works. Check the result
cell2mat(x)
cell2mat(y)

Connectez-vous pour commenter.

Image Analyst
Image Analyst le 12 Mai 2013
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)

Catégories

En savoir plus sur Data Exploration dans Centre d'aide et File Exchange

Question posée :

le 12 Mai 2013

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by