Can someone tell me what's wrong with my syntax or any other errors you spot?
% --- Executes on selection change in popupmenu_filters. function popupmenu_filters_Callback(hObject, eventdata, handles) % hObject handle to popupmenu_filters (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% determine which filter to apply by reading string in pop-up menu str = get(hObject, 'String'); val = get(hObject, 'Value');
% set current filter to the user-selected filter
switch str{val};
case 'imdilate'
handles.current_filter = imdilate
case 'imerode'
handles.current_filter = imerode
case 'imopen'
handles.current_filter = imopen
case 'imclose'
handles.current_filter = imclose
case 'imtophat'
handles.current_filter = imtophat
case 'imbothat'
handles.current_filter = imbothat
case 'entropy filter'
handles.current_filter = entropyfilt
end
handles.image2 = handles.current_filter(handles.image); handles.axes2(imshow(handles.image2)); % pushbutton_save handles structure guidata(hObject, handles);
handles.current_filter = @imdilate;
Without the @ it is going to _ call_ imdilate with no arguments.
So when I'm adding slider capability to the code, how do I call that within the program. Would it be:
handles.image2 = handles.current_filter(handles.image, [handles.slider1 handles.slider2];
or something like that?
Rather than using switch I would package this as a cell array of function handles and then extract the value:
ops={@imdilate,@imerode,@imopen} %etc
handles.current_filter = ops{val};
Your code had
val = get(hObject, 'Value');
so Sean used that.
Just make sure your ops structure is in the same order as the entries in your String property.
Now it's giving me this error:
Attempted to access handles.axes2(234.013); index must be a positive integer or logical.
Error in FESgui>popupmenu_filters_Callback (line 562) handles.axes2(imshow(handles.image2));
Even though my handles structure contains handles for axes2
pushbutton_browse: 238.0118
axes2: 233.0125
axes1: 228.0066
uipanel5: 243.0062
uipanel4: 241.0061
uipanel3: 239.0079
uipanel2: 56.0078
0 Comments