matlab中的GUI,轴

时间:2017-01-28 15:58:01

标签: matlab user-interface matlab-figure matlab-guide

所以我正在建立一个图像分类器。在GUI中,图像加载并在文本框上插入值,然后按下按钮。我在轴上加载图像时遇到问题。因为当调用axes函数时,句柄为零(由于:%处理为空 - 在调用所有CreateFcns之后才创建句柄)。我的问题是,我如何一次只为一个轴调用一个图像。

理想的解决方案是,我创建一个handles.images = imagedatastore,每次按下我添加到计数器(我已经制作)的按钮,然后给索引从数据存储区获取图像。我的问题是我无法获得第一张图片,因为在开始时句柄是空的。我为轴做了函数函数:

    % --- 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

但这有两个问题,第一,我真的不想在按下按钮时调用创建数据存储区的功能,第二,我仍然无法得到计数器的指示。功能,如果我有:

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

它会在第一次给我错误,没有handle.counter

知道如何解决这个问题吗?这是我正在构建的第一个GUI。

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

好吧,我最终得到: 在开幕式中:

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

并在按钮回拨中:

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

最后是一个非常简单的解决方案,我认为我只是在第一次迭代中被封锁了......