Bonjour tout le monde,
Je suis actuellement entrain de réaliser mon premier programme Matlab avec une interface graphique. Le programme doit être capable de cacher une image dans une autre et de décrypter une image cachée dans une autre.
J'ai réalisé la partie cryptage qui marche parfaitement. Sur un fichier "GUI.fig", l'utilisateur est invité à crypter. Sur un autre fichier "decrypter.fig", l'utilisateur est invité à décrypter. Ces deux parties proposent de charger, afficher et sauvegarder des images.Quand je fait tourner les fichier.fig séparément, tout fonctionne parfaitement.
Maintenant j'ai créé un menu en interface graphique "menu.fig" avec 2 boutons. Un pour ouvrir le "GUI.fig" et un autre pour ouvrir "decrypter.fig". Cette fois je rencontre une erreur. Je lance depuis Matlab "menu.fig", et navigue jusqu'à la partie cryptage ou décryptage (l'erreur se produit pour les deux) en cliquant sur les boutons prévus à cet effet. Quand l'utilisateur charge une image, rien ne s'affiche et un rapport d'erreur est produit sur la command window de Matlab.
Voici comment j'appelle les fichiers ".fig":
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 ??? Attempt to reference field of non-structure array. Error in ==> GUI>charger_Callback at 89 axes(handles.axes1); Error in ==> gui_mainfcn at 96 feval(varargin{:}); Error in ==> GUI at 42 gui_mainfcn(gui_State, varargin{:}); Error in ==> @(hObject,eventdata)GUI('charger_Callback',hObject,eventdata,guidata(hObject)) ??? Error while evaluating uicontrol Callback
Le problème semble venir des axes utilisés pour afficher les images. Voici comment je m'en sert:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 % --- Executes on button press in LancerFonction. function LancerFonction_Callback(hObject, eventdata, handles) % hObject handle to LancerFonction (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) F=openfig('GUI.fig'); % --- Executes on button press in pushbutton2. function pushbutton2_Callback(hObject, eventdata, handles) % hObject handle to pushbutton2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) G=openfig('decrypter.fig');
Comment puis-je régler ce problème?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 % --- Executes on button press in ChargerImageACrypter. function ChargerImageACrypter_Callback(hObject, eventdata, handles) % hObject handle to ChargerImageACrypter (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global img2 [path,user_cance]=imgetfile(); if user_cance msgbox(sprintf('Aucune image chargée.'),'Attention','Error'); return end img2=imread(path); axes(handles.axes2); imshow(img2);
Partager