我有一个使用 MATLAB GUIDE 创建 GUI 的任务,但在显示已编辑的图片时遇到问题。我需要有编辑图片的按钮(例如,删除红色、蓝色、绿色组件并旋转)并显示该编辑过的图片。我imshow
用来显示编辑后的图片,但它显示在一个新窗口中并关闭了我正在运行的 GUI。任何人都可以帮忙吗?
我一直在努力解决这个问题,并尝试了许多不同的方法来解决这个问题,但都没有奏效。但是,我使用的是 MATLAB 7.0.1,而 7.7.0 可能会针对此问题进行更新。
我有一个使用 MATLAB GUIDE 创建 GUI 的任务,但在显示已编辑的图片时遇到问题。我需要有编辑图片的按钮(例如,删除红色、蓝色、绿色组件并旋转)并显示该编辑过的图片。我imshow
用来显示编辑后的图片,但它显示在一个新窗口中并关闭了我正在运行的 GUI。任何人都可以帮忙吗?
我一直在努力解决这个问题,并尝试了许多不同的方法来解决这个问题,但都没有奏效。但是,我使用的是 MATLAB 7.0.1,而 7.7.0 可能会针对此问题进行更新。
当你第一次用 绘制图像时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
命令将更改您已经创建的图像对象(可以在此处找到图像对象属性列表)。
或者,您还可以在调用中添加其他参数,imshow
以告诉它要在哪个轴对象中绘制图像:
hAxes = (the handle to an axes object);
imshow(A, 'Parent', hAxes);
编辑:
解决您在函数之间共享 GUI 数据的额外问题,您应该在此处查看 MATLAB 文档。如前所述,有几种不同的方法可以在 GUI 中涉及的不同函数之间传递数据:嵌套函数(在 SO 中提到),使用对象的“UserData”属性(在 SO 中提到),或使用函数setappdata
/getappdata
或guidata
。该guidata
选项可能最适合与在 GUIDE 中制作的 GUI 一起使用。
GUI m 文件函数自动将图像数据分配给名为hObject
. 完成图像更改后,您必须将新数据重新分配给hObject
:
hObject = imshow(newimagedata)
不要忘记通过以下方式更新并保存此操作:
guidata(hObject, handles)