2017-01-28 5 views
0

Итак, я создаю классификатор изображений. В графическом интерфейсе изображение загружается и вставляет значение в текстовое поле и нажимает кнопку. У меня проблема с загрузкой изображения в осях. Потому что, когда функция осей называется ручками, она равна нулю (из-за:% обрабатывает пустые дескрипторы, которые не создаются до тех пор, пока не будут вызваны все CreateFcns). И моя проблема в том, как я могу просто вызвать одно изображение за раз для осей.GUI в matlab, петля изображений в осях

Идеальное решение, я создаю handleles.images = imagedatastore, и каждый раз, когда я нажимаю кнопку, я добавляю в счетчик (который я уже сделал), а затем, чтобы дать индексы, чтобы получить изображение из хранилища данных , Моя проблема заключается в том, что я не могу получить первое изображение, потому что вначале дескрипторы пустые. Я сделал CallFunction для осей:

% --- Executes during object creation, after setting all properties. 
function axes1_CreateFcn(hObject, eventdata, handles) 
% hObject handle to axes1 (see GCBO) 
% eventdata reserved - to be defined in a future version of MATLAB 
% handles empty - handles not created until after all CreateFcns called 
[pict_croped,Nphotos,Date_img] =getcropedimagages; 

handles.img =pict_croped; 
i=readimage(handles.img,1); 
% axes(hObject) 
imshow(i) 
% Hint: place code in OpeningFcn to populate axes1 

но есть две проблемы, во-первых, я не хочу, чтобы вызвать функцию, которая создает Датастор я все время нажать на кнопку, второй, я до сих пор не может получить Indice счетчика, чтобы быть в функции, если у меня есть:

i=readimage(handles.img,handles.counter) 

это даст мне ошибку в первый раз, не имея handles.counter

Любая идея, как чтобы решить это? Это первый графический интерфейс, который я создаю.

+0

Вы прочитали комментарий «% Hint: код места в OpeningFc n для заполнения осей1 "? – Suever

ответ

1

Вопрос очень четко выражен в комментарии, который предоставляет вам GUIDE. Структура handles не заполняется до тех пор, пока не будут выполнены все CreateFcn, поэтому вы хотите использовать OpeningFcn для любой инициализации графических объектов. Затем вы можете добавить любые данные в структуру handles и сохранить их с помощью guidata, чтобы он был доступен из всех ваших других функций обратного вызова.

function OpeningFcn(hObject, eventData, handles) 

    [pict_croped,Nphotos,Date_img] = getcropedimagages; 

    handles.img = pict_croped; 
    i = readimage(handles.img,1); 
    imshow(i, 'Parent', handles.haxes1) 

    % "Save" the changes to the handles object 
    guidata(hObject, handles) 
0

Ну, я в конечном итоге с: в открытии fucntion:

i = readimage(handles.img,handles.counter); 
imshow(, 'Parent', handles.axes1) 

и кнопки обратного вызова:

i = readimage(handles.img,handles.counter); 
imshow(i, 'Parent', handles.axes1) 

Inthe конца является очень простое решение, я думаю, что я был просто заблокирован над первой итерацией ...

 Смежные вопросы

  • Нет связанных вопросов^_^