How to display coordinates as rectangle is drawn over an image?
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
KAE
le 28 Juin 2018
Réponse apportée : Tim Jackman
le 21 Sep 2018
In a GUI, I have an image and the user selects a rectangle using getrect that is later used to crop the image. As the user is selecting the rectangle, I would like to display the rectangle coordinates in real time so that the user can manually seek to match desired coordinates, if they want. (I need to keep the manual aspect of getrect because sometimes there aren't any desired coordinates). Is a popup msgbox the best way to do this, or something else?
Let's say in the following code, the user wants to choose a rectangle with coordinates [100 200 100 100]. How can they get feedback on the coordinates as they manually draw the rectangle?
imshow('moon.tif')
rect = getrect
0 commentaires
Réponse acceptée
Madeline Gardner
le 28 Juin 2018
Hello!
One way that you could do this is by using imrect instead of getrect. getrect only returns the coordinates of the rectangle when the user is done placing it, but imrect allows the user to resize the rectangle and can return the current coordinates at any time.
So, for example, using code from the imrect documentation, you could display the current coordinates of the rectangle in the title of the figure (this version is slightly simplified, the one in the doc is a bit more complex):
imshow('moon.tif')
rect = imrect;
addNewPositionCallback(rect, @(p) title(mat2str(p,3)));
It isn't the prettiest way to display the coordinates, but you could modify the callback function to display them in whatever way you want!
Hope that helps!
2 commentaires
Madeline Gardner
le 28 Juin 2018
No problem! I'm glad it worked :) Sorry if the coordinates not appearing at first was confusing!
Plus de réponses (1)
Tim Jackman
le 21 Sep 2018
Beginning in 18b, this is doable with the new Rectangle ROI:
https://www.mathworks.com/help/images/roi-based-processing.html
Here is an example of how to begin drawing on the current axes and display the rectangle's position as you move the ROI around.
function displayCoordinates
% Create ROI class
h = images.roi.Rectangle();
% Add listener for ROI movement
addlistener(h,'MovingROI',@movingCallback);
% Begin drawing on current axes
h.draw;
end
function movingCallback(src,evt)
src.Label = mat2str(evt.CurrentPosition,3);
end
0 commentaires
Voir également
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!