2017-01-08 2 views
0

je voudrais mettre en pratique sur la conception de l'interface graphique dans Matlab, cette interface a deux fonctions pour sélectionner -one de l'image et la seconde pour le filtrage, la structure générale de cette interface graphique est très simple
enter image description herecréer l'interface graphique pour la sélection et le filtrage de l'image

et voici deux qui code -one sélectionner l'image après avoir appuyé sur sur l'image et sélectionnez seconde qui filtre l'image en utilisant un filtre simple moyenne après avoir cliqué sur sur l'image du filtre

function select_image_Callback(hObject, eventdata, handles) 
% hObject handle to select_image (see GCBO) 
% eventdata reserved - to be defined in a future version of MATLAB 
% handles structure with handles and user data (see GUIDATA) 
[filename, pathname] = uigetfile({'*.jpg';'*.png'},'File select'); 
image=strcat(pathname,filename); 
axes(handles.axes1); 
imshow(image); 

et pour filtrer

function filter_image_Callback(hObject, eventdata, handles) 
% hObject handle to filter_image (see GCBO) 
% eventdata reserved - to be defined in a future version of MATLAB 
% handles structure with handles and user data (see GUIDATA) 
h = ones(5,5)/25; 
Filtered_image = imfilter(image,h); 
axes(handles.axes2); 
imshow(Filtered_image); 

mais quand je lance le code, je choisis simplement ce fichier

enter image description here

je me suis erreur suivant

Error using imfilter 
Expected input number 1, A, to be one of these types: 

numeric, logical 

Instead its type was matlab.graphics.primitive.Image. 

Error in imfilter>parse_inputs (line 186) 
validateattributes(a,{'numeric' 'logical'},{'nonsparse'},mfilename,'A',1); 

Error in imfilter (line 118) 
[a, h, boundary, sameSize, convMode] = parse_inputs(varargin{:}); 

Error in filter_image_filter_image_Callback (line 92) 
Filtered_image = imfilter(image,h); 

Error in gui_mainfcn (line 95) 
     feval(varargin{:}); 

Error in filter_image (line 42) 
    gui_mainfcn(gui_State, varargin{:}); 

Error in @(hObject,eventdata)filter_image('filter_image_Callback',hObject,eventdata,guidata(hObject)) 


Error while evaluating UIControl Callback 

pourquoi arrive cela? Merci d'avance

+0

'de image' est le nom de la fonction dans Matlab afin que vous puissiez avoir un conflit depuis que vous avez nommé une image variable. Essayez de changer le nom de cette variable –

+0

il y a un problème, de la deuxième fonction je ne peux pas accéder à la variable dans la première fonction, je veux dire que la portée variable est violée, alors devrais-je le déclarer global? –

+0

j'ai résolu et je posterai mon code –

Répondre

0

basé sur ma question et lié au problème, j'ai décidé d'inclure également ma solution, que j'ai trouvé après avoir recherché, voici des fragments de mon code, d'abord grâce à @ Benoit_11 pour ses conseils et je ont changé de nom de l'image à selected_image, lié à mon commentaire sur l'accès à une variable (dans cette image de cas) forment une autre fonction i utilisé la fonction getimage, donc il est ma solution complète

function select_image_Callback(hObject, eventdata, handles) 
% hObject handle to select_image (see GCBO) 
% eventdata reserved - to be defined in a future version of MATLAB 
% handles structure with handles and user data (see GUIDATA) 
[filename, pathname] = uigetfile({'*.jpg';'*.png'},'File select'); 
selected_image=strcat(pathname,filename); 
axes(handles.axes1); 
imshow(selected_image); 

% --- Executes on button press in filter_image. 
function filter_image_Callback(hObject, eventdata, handles) 
% hObject handle to filter_image (see GCBO) 
% eventdata reserved - to be defined in a future version of MATLAB 
% handles structure with handles and user data (see GUIDATA) 
selected_image=getimage(handles.axes1); 
h = ones(5,5)/25; 
Filtered_image = imfilter(selected_image,h); 
axes(handles.axes2); 
imshow(Filtered_image); 

enter image description here