Bonjour à tous,
voila mon souci est le suivant:
Je cherche a faire apparaitre les coordonnées de ma souris lorsque je me trouve sur une image.Mon problème et que pour le moment j'arrive à afficher uniquement les coordonnées de la souris par rapport à la figure dans laquelle se trouve mon image.
Mon but serait d'avoir mes coordonnées qui démare de 0 à partir de l'image.
Je pense que mon problème vient du fait que je récupère le currentpoint de la figure et non de l'image.
Le programme est le suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
function reticule_matlab_coordonnees
%% création de la fenêtre principal
handles(1)=figure('Position', [0, 300, 600, 400],...  % Position de la fenêtre.
    'Name', 'Acquisition',...  % Nom de la fenêtre.
    'NumberTitle', 'off',...  % Non affichage 'figure X'.
    'Pointer','fullcross',... % Choix du réticule.
    'WindowButtonMotionFcn',@trace); %WindowButtonMotionFcn permet de récupérer la position de la souris.
 
%afficheur x_souris
handles(2)=uicontrol('style','text','position',[125 20 20 15]);
%afficheur y_souris
handles(3)=uicontrol('style','text','position',[100 20 20 15]);
 
%% Ouverture et affichage de la photo.
I = imread('noir_et_blanc.png');
imshow(I);
axesimg = gca;
 
%% Création de la fenêtre pour afficher le tracer de X.
figure('Position', [650, 550, 600, 400],...
    'Name', 'X trace (ligne)',...
    'NumberTitle', 'off');
axesx = axes();
 
%% Création de la fenêtre pour afficher le tracer de y.
figure('Position', [650, 50, 600, 400],...
    'Name', 'Y trace (colonne)',...
    'NumberTitle', 'off');
axesy = axes();
 
x = zeros(size(I,2),1);
y = zeros(size(I,1),1);
 
px = plot(axesx,x); 
py = plot(axesy,y);
 
    function trace(~,~)
        pt = ceil(get(axesimg,'CurrentPoint')); %Arrondi au positif sup axesming et position souris(CurrentPoint).
 
        % On mais a jour le tracer que si on ce trouve sur l'image
        if pt(1,1) >= 1 && pt(1,2) >= 1 && pt(1,1) <= size(I,2) && pt(1,2) <= size(I,1) 
            x = I(pt(1,2),:); % Extraction ligne des x pointée
            y = I(:,pt(1,1)); % Extraction colonne des y pointée
            set(px,'YData',x); % Mise à jour des paramètres graphique (point et axe)
            set(py,'YData',y); % Mise à jour les paramètres graphique (point et axe)
 
          %% Recuperation de la position de la souris et affichage
        P=get(handles(1),'CurrentPoint');
        x_souris=P(1);
        y_souris=P(2);
 
        set(handles(2),'string',x_souris); % mise a jour affichage
        set(handles(3),'string',y_souris);
 
        end     
    end
end