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 |
Partager