matlab中的GUI,轴中的图像循环
Posted
技术标签:
【中文标题】matlab中的GUI,轴中的图像循环【英文标题】:GUI in matlab, loop of images in axes 【发布时间】:2017-01-28 15:58:00 【问题描述】:所以我正在构建一个图像分类器。在 GUI 中,图像加载并在文本框上插入一个值,然后按下按钮。我在轴中加载图像时遇到问题。因为当调用轴函数时,句柄为零(由于:% 句柄为空 - 直到调用所有 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)
它会在第一时间给我错误,没有handles.counter
知道如何解决这个问题吗?这是我正在构建的第一个 GUI。
【问题讨论】:
您是否阅读了评论“% 提示:在 OpenFcn 中放置代码以填充轴 1”? 【参考方案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)
【讨论】:
【参考方案2】:好吧,我最终得到: 在开头的函数中:
i = readimage(handles.img,handles.counter);
imshow(, 'Parent', handles.axes1)
并在按钮回调中:
i = readimage(handles.img,handles.counter);
imshow(i, 'Parent', handles.axes1)
最后是一个非常简单的解决方案,我想我只是在第一次迭代时头脑受阻......
【讨论】:
以上是关于matlab中的GUI,轴中的图像循环的主要内容,如果未能解决你的问题,请参考以下文章