Matlab更新图像句柄

时间:2013-04-28 15:13:08

标签: image matlab user-interface matlab-figure handles

我正在使用Matlab创建一个图像编辑程序。用户在一个按钮回调函数中上传图像。然后,用户可以使用其他按钮回调来编辑图像(旋转,变为黑白等)。

虽然我可以访问图像并成功单独编辑,但它总是恢复到原始上传状态。例如 - 如果我先旋转它,然后更改为黑白,旋转将消失,反之亦然。

我正在使用:

handles=guidata(hObject); 

在每个功能的开头。和

guidata(hObject, handles);

在每个函数的末尾,但函数始终访问最初上传的图像。

如何在每次编辑后成功更新图像句柄???

以下是回调函数的示例:

function pushbutton3_Callback(hObject, eventdata, handles)
handles=guidata(hObject);
I = rgb2gray(handles.im)
himage = imshow(I, 'Parent', handles.axes1);
guidata(hObject, handles);

1 个答案:

答案 0 :(得分:0)

当您在一个回调函数中对图像执行操作时,您应该将结果存储回获取图像的handles结构中。这样,下次回调函数执行时,它将获得修改后的图像。

function pushbutton3_Callback(hObject, eventdata, handles)
    %# get the image from the handles structure
    img = handles.im;

    %# process the image in some way and show the result
    img = rgb2gray(img);
    himage = imshow(img, 'Parent', handles.axes1);

    %# store the image back in the structure
    handles.im = img;
    guidata(hObject, handles);
end