在 MATLAB 创建的 GUI 中显示编辑后的图片时出现问题

发布于 2024-07-17 07:26:18 字数 263 浏览 6 评论 0原文

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

我一直在研究这个问题,并尝试了多种不同的方法来解决这个问题,但没有任何效果。 但是,我使用的是 MATLAB 7.0.1,7.7.0 可能有针对此问题的更新。

I have an assignment to create a GUI using MATLAB GUIDE and am having a problem with displaying an edited picture. I need to have buttons that edit the picture (eg. remove red, blue, green components and rotate) and display that edited picture. I am using imshow to display the edited picture but it displays in a new window and shuts down the GUI I had running. Can anyone help?

I've been working on this and have tried numerous different ways of fixing the problem but none worked. However, I am using MATLAB 7.0.1, and 7.7.0 might have an update for this problem.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

是伱的 2024-07-24 07:26:18

当您第一次使用 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/getappdataguidataguidata 选项可能最适合与 GUIDE 中制作的 GUI 一起使用。

When you first plot the image with imshow, have it return a handle to the image object it creates:

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

Then, to update the image with new data, try the following instead of calling imshow again:

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

Using the set command will change the image object you already created (a list of image object properties can be found here).

Alternatively, you can also add additional parameters to a call to imshow to tell it which axes object to plot the image in:

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

EDIT:

Addressing your additional problem of sharing GUI data between functions, you should check out the MATLAB documentation here. As noted there, there are a few different ways to pass data between different functions involved in a GUI: nesting functions (mentioned on SO here), using the 'UserData' property of objects (mentioned on SO here), or using the functions setappdata/getappdata or guidata. The guidata option may be best for use with GUIs made in GUIDE.

美人如玉 2024-07-24 07:26:18

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

hObject = imshow(newimagedata)

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

guidata(hObject, handles)

The GUI m file functions automatically assign the image data to a variable called hObject. Once you have done your image alteration, you have to reassign the new data to hObject:

hObject = imshow(newimagedata)

Don't forget to update and save this operation by:

guidata(hObject, handles)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文