abfll 2023-04-03 16:34 采纳率: 25%
浏览 60
已结题

MATLAB的GUI

请教大家,在MATLAB中,我要做一个GUI界面,可是运行函数时总是,函数中的处理摄像头后的图像总是单独跳出来,显示不到我的GUI界面的Axes控件里面。

img

img

  • 写回答

4条回答 默认 最新

  • 「已注销」 2023-04-03 17:11
    关注

    回答引用new Bing:
    这个问题通常是由于MATLAB GUI中的图像显示和函数的处理分别在不同的线程上运行引起的。为了将处理后的图像显示到GUI界面上,您需要确保在GUI的主线程上显示图像。

    一种可能的解决方案是使用回调函数来更新GUI中的Axes控件,并确保在该回调函数中显示图像。具体来说,您可以执行以下步骤:

    1 将摄像头采集到的图像传递给您的函数进行处理。
    2 在处理函数中,将处理后的图像存储在一个变量中,然后调用一个回调函数来更新GUI界面上的Axes控件。
    3 在回调函数中,将存储的图像显示在Axes控件中。确保在此过程中使用drawnow函数强制MATLAB执行任何待处理的绘图命令并更新GUI界面。
    以下是示例代码,其中myFunction为您的处理函数,updateImage为回调函数:

    function myGUI()
    % 创建GUI界面和Axes控件
    fig = figure();
    ax = axes('Parent', fig, 'Units', 'normalized', 'Position', [0.2 0.2 0.6 0.6]);
    % 创建一个按钮,当点击时调用myFunction函数进行图像处理
    btn = uicontrol('Style', 'pushbutton', 'String', 'Process Image', ...
        'Position', [20 20 100 25], 'Callback', @myFunction);
    
    function myFunction(~, ~)
        % 在此处执行您的图像处理操作,并将处理后的图像存储在img变量中
        img = yourImageProcessingFunction();
        
        % 调用updateImage回调函数来更新GUI界面上的图像
        updateImage(img);
    end
    
    function updateImage(img)
        % 将存储的图像显示在Axes控件中
        imshow(img, 'Parent', ax);
        % 强制MATLAB更新GUI界面
        drawnow;
    end
    end
    

    在上面的示例代码中,myFunction和updateImage都是在GUI主线程上运行的,因此可以正确地更新Axes控件并显示图像。

    评论

报告相同问题?

问题事件

  • 系统已结题 4月11日
  • 创建了问题 4月3日

悬赏问题

  • ¥15 使用Java milo连接Kepserver服务端报错?
  • ¥15 用ADS设计一款的射频功率放大器
  • ¥15 怎么求交点连线的理论解?
  • ¥20 软件开发方法学习来了
  • ¥15 微信小程序商城如何实现多商户收款 平台分润抽成
  • ¥15 HC32L176调试了一个通过TIMER5+DMA驱动WS2812B
  • ¥15 cocos的js代码调用wx.createUseInfoButton问题!
  • ¥15 关于自相关函数法和周期图法实现对随机信号的功率谱估计的matlab程序运行的问题,请各位专家解答!
  • ¥15 Python程序,深度学习,有偿私
  • ¥15 扫描枪扫条形码出现问题