我有一个使用 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)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top