get a cropped image using mouse click

Hello,
I want to crop an image using coordinates of mouse click. I find a solution with handler function, but the problem is that I can't get results from the function. I used the following code:
function demoOnImageClick (I)
clc;clear;
imObj = imread(I);
disp(size(imObj));
figure;
hAxes = axes();
imageHandle = imshow(imObj);
set(imageHandle,'ButtonDownFcn',@ImageClickCallback);
function coordinates = ImageClickCallback ( objectHandle , eventData )
axesHandle = get(objectHandle,'Parent');
coordinates = get(axesHandle,'CurrentPoint');
coordinates = coordinates(1,1:2);
end
end
Using this code, I can't get coordinates at each click to use them in the imcrop function. What can I do?

1 commentaire

Guillaume
Guillaume le 8 Juil 2015
Note there is absolutely no point in having clear at the start of a function.

Connectez-vous pour commenter.

Réponses (1)

Guillaume
Guillaume le 8 Juil 2015
The simplest way to get mouse coordinates on your image is to use ginput:
imshow(img);
[columns, rows] = ginput;
But also note that if you call imcrop without specifying the cropping coordinates you get an interactive tool anyway, so I would just do:
[croppedimage, rect] = imcrop(img);

Catégories

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

Community Treasure Hunt

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

Start Hunting!

Translated by