0

我有一段 300 行长的代码。整个代码中有 3 个不同的 imshow 实例,它们在代码运行时显示图形。我创建的 GUI 将非常简单。目前我有一个启动 m 文件的按钮。我试图让图像显示在我正在创建的 GUI 中,而不是在单独的图形窗口中。我一直在在线查看教程,但无法快速解决我的问题,它们都变得有点复杂,我无法弄清楚到底该怎么做。

我在 GUI 上插入了 3 个轴,在每个轴的“视图回调”中,我可以创建 fcn、deletefcn 和 buttonDownFcn。当我 createFcn 时,它会提示我在自动生成的代码中“将代码放在 OpenFcn 中以填充轴 1”。

我曾尝试这样做,但我无法找到编写代码的正确位置。

有人可以告诉我我的方向是正确的还是错误的。

谢谢

4

2 回答 2

2

为了显示这些图像,您需要在 imshow 中声明父级。父级是您想要充当图像画布的对象,在您的情况下将是一个axes.

我用三个轴和一个按钮创建了一个非常简单的 gui。MATLAB 将我的坐标区命名为axes1axes2并且axes3. Guide 将句柄保存到这些轴,以便您可以在整个 gui 代码中与它们进行交互。例如,您提到了打开功能......这是我的调用 imshow (我添加的唯一行是最后三行):

% --- Executes just before myGUI is made visible.
function myGUI_OpeningFcn(hObject, eventdata, handles, varargin)

% Choose default command line output for myGUI
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes myGUI wait for user response (see UIRESUME)
% uiwait(handles.figure1);
imshow('myImage1.png', 'Parent', handles.axes1)
imshow('myImage2.png', 'Parent', handles.axes2)
imshow('myImage3.png', 'Parent', handles.axes3)

请注意,我可以抓住轴的手柄,然后将它们声明为我imshow调用结果的父级。

如果您不确定句柄的名称是什么,您可以通过右键单击、查看属性检查器和tag属性来检查 GUI 编辑器。

如果您想在单击按钮时执行类似的操作,请右键单击编辑器中的按钮,然后单击 View Callbacks -> Callback,您可以在imshow那里添加代码。

祝你好运。

于 2013-05-29T13:47:14.993 回答
1

如果我理解正确,您只希望您的图像出现在轴上而不是图形中。在显示图像之前尝试将焦点设置到轴本身。

    axes(1);%you may need to change the one to your axes handle. 
    imagesc(imageToBeDisplayed);

    axes(2);
    imagesc(secondImage);

    axes(3);
    imagesc(thirdImage);

这样,在您调用 imagesc 之前,您可以确保您的程序知道将图像发送到哪里。否则它可能只是创建一个图形。

于 2013-05-29T13:47:02.383 回答