MATLAB: How to display coordinates as rectangle is drawn over an image

getrect

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

Best Answer

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!