在GUI Matlab中循环浏览图像

时间:2018-07-13 15:44:56

标签: matlab user-interface

我有一个图像单元格数组,我正在尝试使用'NEXT'按钮在GUI中循环显示,同时在屏幕上显示两个图像。我有9张图像,每张图像都是3张,而我有3张图像,因此我想查看1和2,以及2和3,而不是3和1,这将是列表中的下一个。我在编写此代码时遇到了麻烦,因此非常感谢您的帮助!

function next_block_Callback(hObject, eventdata, handles)

handles.curr_im_fig = handles.curr_im_fig+1;
if mod(handles.curr_im_fig,(handles.maxblock))~=0
    p1 = handles.curr_im_fig;
    p2 = handles.curr_im_fig+1;
else p1 = handles.curr_im_fig +2;
    p2 = handles.curr_im_fig + 3;
end

imshow(handles.images_fig{handles.curr_im_fig},'parent',handles.axes1);
imshow(handles.images_fig{(handles.curr_im_fig)+1},'parent',handles.axes2);
guidata(hObject,handles)

1 个答案:

答案 0 :(得分:-1)

我能想到的最直接的方法是将要显示的图像序列保持在矩阵中,并在每次要显示新图像时都访问矩阵。优选地,矩阵被布置为使得每一行是要同时示出的两个图像的索引。您可以将当前显示的图像的行号保留在appdatahabdles.curSeqNum = 1;中,并在每次单击下一个按钮时前进此数字。

下面是该想法的演示。您需要在OpeningFcn中预置function next_block_Callback(hObject, eventdata, handles) % Image sequence mySeq = [1 2; 2 3; 4 5; 5 6; 7 8; 8 9]; nxtSeqNum = handles.curSeqNum + 1; if nxtSeqNum > size(mySeq, 1), nxtSeqNum = 1; end imshow(handles.images_fig{mySeq(nxtSeqNum, 1)},'parent',handles.axes1); imshow(handles.images_fig{mySeq(nxtSeqNum, 2)},'parent',handles.axes2); handles.curSeqNum = nxtSeqNum; guidata(hObject,handles) end

{{1}}