How to select an object if you click it?

5 visualizzazioni (ultimi 30 giorni)
Meshooo
Meshooo il 15 Gen 2014
Commentato: SC P il 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

Risposta accettata

Image Analyst
Image Analyst il 15 Gen 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 Commenti
Meshooo
Meshooo il 15 Gen 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 il 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{:}];

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by