0

我正在使用 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);
4

1 回答 1

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
于 2013-04-28T18:44:12.117 回答