2013-04-28 139 views
0

我使用Matlab创建图像编辑程序。用户使用一个按钮回叫功能上传图像。用户然后可以使用其他按钮回调来编辑图像(旋转,变成黑色和白色等)。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

在每个函数中是否包含'hObject'作为输入和输出参数? – tashuhka 2013-04-28 15:42:30

+0

你可以发布一个回调函数的代码吗?我们需要看看你是如何访问图像 – Amro 2013-04-28 16:39:12

+0

感谢您的帮助 - 我编辑了一个包含我的回调函数的示例。 – Gwenji 2013-04-28 16:54:19

回答

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 
+0

完美!非常感谢你! – Gwenji 2013-04-29 14:09:07