How to select an object if you click it?

3 次查看(过去 30 天)
Dear all,
I have an image the contains few objects as I show here. I want that if the user click inside an object using the mouse then this clicked object will remain and all other objects will be removed from the image.
Is there someway to do that?
Any help will be appreciated.
Meshoo

采纳的回答

Image Analyst
Image Analyst 2014-1-15
Yes. Follow these steps
  1. label the binary image with bwlabel
  2. call [column, row] = int32(ginput(1)) to let the user click somewhere
  3. get the label with labelNumber = labeledImage(row, column)
  4. extract the object with extractedObject = ismember(labeledImage, labelNumber)
  5. Make it binary again binaryImage = extractedObject > 0;
  6. display it with imshow(binaryImage, []);
  2 个评论
Meshooo
Meshooo 2014-1-15
clear all
clc
%
I = imread('regular_shapes.tif');
%
BW = im2bw(I);
%
figure, imshow(BW);
hold on
[yCenter, xCenter] = ginput(1)
hold off
%
b = bwboundaries(BW);
%
[L, num_Obj] = bwlabel(BW, 4);
%
for k = 1:num_Obj;
Obj = L ==k;
bb = b{k};
X_obj = bb(:, 1);
Y_obj = bb(:, 2);
Selec{k} = inpolygon(xCenter,yCenter,X_obj,Y_obj);
end
Selec;
%
Selec = [Selec{:}];
[value,index] = max(Selec);
%
Obj = L ==index;
%
figure, imshow(Obj);
SC P
SC P 2018-11-26
Error came while running script"
Brace indexing is not supported for
variables of this type.
Error in boundin_box_26_11 (line 75)
Selec = [Selec{:}];

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by