在 MATLAB 创建的 GUI 中显示编辑后的图片时出现问题
-
12-09-2019 - |
题
我有一个使用 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米文件的功能自动地将图像数据分配给一个变量被称为hObject
。一旦你这样做你的形象改变,你必须重新分配新的数据hObject
:
hObject = imshow(newimagedata)
不要忘记更新,并通过保存该操作:
guidata(hObject, handles)
不隶属于 StackOverflow