How to select an object if you click it?

5 vues (au cours des 30 derniers jours)
Meshooo
Meshooo le 15 Jan 2014
Commenté : SC P le 26 Nov 2018
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

Réponse acceptée

Image Analyst
Image Analyst le 15 Jan 2014
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 commentaires
Meshooo
Meshooo le 15 Jan 2014
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 le 26 Nov 2018
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{:}];

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Matrix Indexing dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by