Bonjour a vous,
Merci d'avance pour l'aide que vous pourrez m apporter.
Tout d'abord, ce que j'essaie de faire :
J'ai une figure 3 axes, h1 a gauche et h2 et h3 (top layer) superposes a droite.
Quand je lance mon prog, je dessine img1 dans h1, et im2 dans h2.
Par la suite, j'utilise la fonction imrect qui me permet de selectionner un bout de l'image presente dans h1, de la resizer, et la superposer avec une valeur alpha de 0.5 sur l'image img2 de h2 en la dessinant dans h3%% drawing box 1, 2, 3
h1 = axes;
set(a_hybrid1,'units','pixels');
set(a_hybrid1,'position', [20 58 size1(2) size1(1)]);
h_canvas = image(img1, 'parent', h1);
axis(h1, 'equal'); axis(h1, 'off')
h2 = axes;
set(h2,'units','pixels');
set(h2,'position',[20+size1(2)+20 300 512 512]);
h_canvas = image(img2, 'parent', h2);
axis(h2, 'equal'); axis(h2, 'off'); hold on;
h3 = axes;
set(h3,'Layer','top')
set(h3,'units','pixels');
set(h3,'position',[20+size1(2)+20 300 512 512]);
axis(h3, 'equal'); axis(h3, 'off');hold on;
Et cela marche parfaitement !!hrect = imrect(h1, [50 50 512 512]);
api = iptgetapi(hrect);
fcn = makeConstrainToRectFcn('imrect',...
get(h1,'XLim'),get(h1,'YLim'));
api.setDragConstraintFcn(fcn);
api.setColor([1 0 0]);
api.setFixedAspectRatioMode('TF');
pos = api.getPosition()
pos = round(pos);
id = api.addNewPositionCallback(@(pos) drawimg(pos,img1,size2, h3));
function drawimg(pos, img, sizeimg, hd)
cla(hd)
img3 = imresize(img(pos(2):pos(2)+pos(3),pos(1):pos(1)+pos(4),: ),[sizeimg(1) sizeimg(2)]);
for i =1:3
img3(:,:,i) = flipud(img3(:,:,i));
end
idd = image(img3,'parent',hd,'AlphaData',.5);% position = round(position);
Ce que je n'arrive pas a comprendre, et surement parce que c'est ma premiere GUI, c'est comment recuperer l'output img3 de la fonction drawimg appelee par
id = api.addNewPositionCallback(@(pos) drawimg(pos,img1,size2, h3));
dans mon code
Il y a trop de choses nouvelles pour moi. Entre api, anonymous function, et GUI, c'est confus
J'ai deja essaye :
- id = api.addNewPositionCallback(@(pos) output = drawimg(pos,img1,size2, h3));
- id = api.addNewPositionCallback(output =@(pos) drawimg(pos,img1,size2, h3));
Mais ca ne marche pas.
Merci d'avance pour votre aide. Je me tiens a disposition pour tout complement d'information.
Partager