get a cropped image using mouse click

4 views (last 30 days)
mariem farhat
mariem farhat on 8 Jul 2015
Commented: mariem farhat on 9 Jul 2015
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 Comment
Guillaume
Guillaume on 8 Jul 2015
Note there is absolutely no point in having clear at the start of a function.

Sign in to comment.

Answers (1)

Guillaume
Guillaume on 8 Jul 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);

Categories

Find more on Data Exploration in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!