• 【MATLAB GUI】 5. 图像处理菜单(菜单编辑器)


    看B站up主freexyn的freexyn编程实例视频教程系列36Matlab GUI的学习笔记

    任务要求设计一个图像处理菜单,实现图像的打开导入、灰度处理、存储等功能

    修改过文件名,所以运行的时候会有一点点报错,但是不影响运行

    1. 打开工具栏下边的菜单编辑器,新建5个菜单

      在这里插入图片描述

    2. 修改菜单文本,新建菜单项,确定

      在这里插入图片描述
      在这里插入图片描述

    3. 使用坐标区设计页面,保存为menu.fig

      在这里插入图片描述

    4. 运行,可以看到菜单的设计

      在这里插入图片描述

    5. 编辑”文件-打开“的回调函数:点击菜单编辑器,点击文件-打开,标记改为”open“,点击”查看“,定位到回调函数

       ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/909c41e668724740bb9a619bb9d661a5.png#pic_center)
      
      • 1
       function open_Callback(hObject, eventdata, handles)
       % hObject    handle to open (see GCBO)
       % eventdata  reserved - to be defined in a future version of MATLAB
       % handles    structure with handles and user data (see GUIDATA)
       [file_name,path]=uigetfile('*.jpg');
       axes(handles.axes1);%设置第一个坐标区为当前坐标区
       imshow(fullfile(path,file_name));
       set(handles.axes1,'userdata',fullfile(path,file_name));
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8

      在这里插入图片描述

    6. 编辑”图像处理-转成灰度图“的回调函数:点击菜单编辑器,点击图像处理-转成灰度图,标记改为”gray“,点击”查看“,定位到回调函数

      在这里插入图片描述

      function gray_Callback(hObject, eventdata, handles)
      path=get(handles.axes1,'userdata');
      data=imread(path);
      data2=rgb2gray(data);
      axes(handles.axes2);
      imshow(data2);
      set(handles.axes2,'userdata',data2);
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7

      在这里插入图片描述

    7. 编辑”文件-导出“的回调函数:点击菜单编辑器,点击文件-导出,标记改为”export“,点击”查看“,定位到回调函数

      function export_Callback(hObject, eventdata, handles)
      data2=get(handles.axes2,'userdata');
      file_name=imputfile;
      imwrite(data2,file_name);
      helpdlg('保存完成');
      
      • 1
      • 2
      • 3
      • 4
      • 5

      在这里插入图片描述

    8. 添加上下文菜单:实现第一个快捷菜单在右键点击左边坐标区时会跳出打开功能,第二个快捷菜单在右键点击右边坐标区时会跳出转成灰度图功能

      1. 添加两个上下文菜单

        在这里插入图片描述

      2. 快捷打开的回调函数与正式流程的函数一样,直接复制粘贴

        function open_fast_Callback(hObject, eventdata, handles)
        [file_name,path]=uigetfile('*.jpg');
        axes(handles.axes1);%设置第一个坐标区为当前坐标区
        imshow(fullfile(path,file_name));
        set(handles.axes1,'userdata',fullfile(path,file_name));
        
        • 1
        • 2
        • 3
        • 4
        • 5
      3. 快捷打转成灰度图的回调函数与正式流程的函数一样,直接复制粘贴

        function gray_fast_Callback(hObject, eventdata, handles)
        path=get(handles.axes1,'userdata');
        data=imread(path);
        data2=rgb2gray(data);
        axes(handles.axes2);
        imshow(data2);
        set(handles.axes2,'userdata',data2);
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
      4. 把快捷菜单与它的属性连接起来:双击左边坐标区,属性UIContexMenu为c1。右边坐标区同理(但我设置的时候没找到UIContexMenu)

  • 相关阅读:
    SQLDEV平台教学 - 权限配置
    【算法】二分查找-20231121
    CMU/MIT/清华/Umass提出生成式机器人智能体RoboGen
    #力扣:14. 最长公共前缀@FDDLC
    程序员常用的组件、框架、开发工具下载链接大全
    USB2.0 UTMI+接口
    41.cuBLAS开发指南中文版--cuBLAS中的Level-2gemvBatched()
    常见的性能测试缺陷
    SpringMVC (JSR303 & 拦截器)
    Intel CPU的i数和代数有什么区别?
  • 原文地址:https://blog.csdn.net/qq_53223504/article/details/136240733