2010-12-01 5 views
0

Je travaille sur la segmentation d'image basée sur l'objet de couleur .. maintenant je dois obtenir la valeur de clic de l'utilisateur sur l'objet afin d'utiliser cette information (valeur de clic) dans une autre processus. Comment puis-je obtenir cette valeur dans matlab? n'importe qui peut m'aider s'il vous plaît.obtenir des informations de cliquer sur un objet dans l'image dans matlab

Cordialement

Répondre

2

Si vous voulez que l'utilisateur de cliquer sur un terrain ou une image et obtenir les coordonnées où ils ont cliqué, vous pouvez utiliser ginput. Par exemple,

[x,y] = ginput(1); 

vous donnera les coordonnées d'un clic. Vous pouvez ensuite utiliser votre propre logique pour déterminer quel objet correspond.

Si ce n'est pas ce que vous essayez de faire, vous devrez expliquer plus clairement.

+0

Merci d'avoir répondu ... Oui, je veux l'utilisateur de cliquer sur l'image (tout objet dans l'image) et obtenir les coordonnées où ils cliquent sur ... Si je reçois ce coordonnées puis je vais essayer pour appliquer la fonction ginput ... merci beaucoup – zenab

+0

désolé pour cette erreur ... Je vais continuer ma question ... Si je reçois les coordonnées de l'objet puis-je traiter avec cet objet comme une image? – zenab

+0

J'ai édité la question pour illustrer. –

2

Je ne sais pas si cela répond à votre question, mais des objets de terrain (à savoir lines, patches, images, etc.) ont un rappel ButtonDownFcn qui exécutera lorsque vous appuyez sur un bouton de la souris alors que le pointeur se trouve sur l'objet.

Voici un exemple simple (en utilisant nested functions et function handles) de la façon dont vous pouvez utiliser ButtonDownFcn callbacks pour obtenir des informations sur les objets sélectionnés. Tout d'abord, enregistrez cette fonction dans un m-file:

function colorFcn = colored_patches 

    selectedColor = [1 0 0]; %# The default selected color 

    figure;         %# Create a new figure 
    axes;         %# Create a new axes 
    patch([0 0 1 1],[0 1 1 0],'r',...  %# Plot a red box 
     'ButtonDownFcn',@patch_callback); 
    hold on;         %# Add to the existing plot 
    patch([2 2 4 4],[1 2 2 1],'g',...  %# Plot a green box 
     'ButtonDownFcn',@patch_callback); 
    patch([1 1 2 2],[3 4 4 3],'b',...  %# Plot a blue box 
     'ButtonDownFcn',@patch_callback); 
    axis equal;        %# Set axis scaling 

    colorFcn = @get_color; %# Return a function handle for get_color 

%#---Nested functions below--- 

    function patch_callback(src,event) 
    selectedColor = get(src,'FaceColor'); %# Set the selected color to the 
              %# color of the patch clicked on 
    end 

    function currentColor = get_color 
    currentColor = selectedColor;   %# Return the last color selected 
    end 

end 

Ensuite, exécutez le code ci-dessus et enregistrez la poignée de fonction renvoyée dans une variable:

colorFcn = colored_patches; 

Cela va créer une figure avec 3 cases colorées , comme ceci:

alt text

maintenant, lorsque vous cliquez sur la souris sur une des cases de couleur, la sortie de colorFcn sera chan ge:

%# Click the red box, then call colorFcn 
>> colorFcn() 
ans = 
    1  0  0 %# Returns red 

%# Click the blue box, then call colorFcn 
>> colorFcn() 
ans = 
    0  0  1 %# Returns blue 

%# Click the green box, then call colorFcn 
>> colorFcn() 
ans = 
    0  1  0 %# Returns green 
+0

Merci d'avoir répondu ... mais cela ne répond pas à ma question .... Je megmente l'image en fonction des objets puis j'affiche à l'utilisateur sa segmentation d'image afin de laisser l'utilisateur choisir n'importe quel objet l'image (en cliquant sur l'objet qu'il aime), dans ce cas je dois prendre l'information de l'objet que l'utilisateur a sélectionné afin de faire mes démarches en fonction de cet objet – zenab

Questions connexes