在MATLAB中创建的GUI中显示已编辑图片的问题

时间:2009-04-20 14:29:36

标签: matlab user-interface matlab-guide

我有一个使用MATLAB GUIDE创建GUI的任务,并且在显示已编辑的图片时遇到问题。我需要有编辑图片的按钮(例如,删除红色,蓝色,绿色组件和旋转)并显示编辑过的图片。我使用imshow来显示已编辑的图片,但它显示在一个新窗口中并关闭我运行的GUI。有人可以帮忙吗?

我一直在努力解决这个问题并尝试了许多不同的方法来解决问题,但都没有奏效。但是,我使用的是MATLAB 7.0.1,而7.7.0可能会对此问题进行更新。

2 个答案:

答案 0 :(得分:4)

首次使用imshow绘制图像时,让它返回其创建的图像对象的句柄:

A = (the initial matrix of image data);
hImage = imshow(A);

然后,要使用新数据更新图片,请尝试以下操作,而不是再次调用imshow

B = (modification of the original image matrix A);
set(hImage, 'CData', B);

使用set命令将更改您已创建的图像对象(可以找到图像对象属性列表here)。

或者,您也可以在调用imshow时添加其他参数,告诉它哪些轴对象可以在中绘制图像:

hAxes = (the handle to an axes object);
imshow(A, 'Parent', hAxes);

修改

解决在函数之间共享GUI数据的其他问题,您应该查看MATLAB文档here。如上所述,有几种不同的方法可以在GUI中涉及的不同函数之间传递数据:嵌套函数(在SO here上提到),使用对象的'UserData'属性(在SO {{3}上提到) }),或使用函数here / setappdatagetappdataguidata选项最适合与GUIDE中的GUI一起使用。

答案 1 :(得分:0)

GUI m文件功能自动将图像数据分配给名为hObject的变量。完成图像更改后,必须将新数据重新分配给hObject

hObject = imshow(newimagedata)

不要忘记通过以下方式更新并保存此操作:

guidata(hObject, handles)