【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)
    
     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));
    

    在这里插入图片描述

  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);
    

    在这里插入图片描述

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

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

    在这里插入图片描述

  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));
      
    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);
      
    4. 把快捷菜单与它的属性连接起来:双击左边坐标区,属性UIContexMenu为c1。右边坐标区同理(但我设置的时候没找到UIContexMenu)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/697009.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开窗Window和WindowAll的区别

在 Apache Flink 流处理框架中,窗口操作是处理流数据的重要部分。Flink 提供了时间窗口、计数窗口等多种窗口类型,用于将数据分割成不同的窗口进行聚合或其他处理。 Window 和 WindowAll 是 Flink 中窗口操作的两种不同方式,它们分别对应不同…

GIT仓库转移--携带原分支及提交记录

背景:最近公司仓库位置需要移动,想保留原有的仓库分支和提交记录 操作: 目的位置新建仓库(要保证创建无误)原仓库 git clone 到本地,git pull 保证代码最新找到原仓库.git/config 文件,修改 rem…

EPSON机器人与PC上位机软件C#网络TCP通讯

项目背景: 在非标设备PIN焊接机中用到了爱普生机器人。上位机软件使用c#wpf开发。主要逻辑在上位机中。用爱普生机器人给焊接平台实现自动上下料。 通讯方式:网络TCP通讯,Socket 角色:上位机为服务端,机器人为客户端…

Linux|centos7|录屏神器asciinema的编译安装和离线化安装使用

前言: asciinema这个录屏软件前面有一点研究,但它的部署安装比较麻烦,虽然此软件的安装部署方式是很多的,比如yum安,apt,brew,docker,pip,rust编译,docker等…

创建一个基于Node.js的实时聊天应用

在当今数字化社会,实时通讯已成为人们生活中不可或缺的一部分。无论是在社交媒体平台上与朋友交流,还是在工作场合中与同事协作,实时聊天应用都扮演着重要角色。与此同时,Node.js作为一种流行的后端技术,为开发者提供了…

CrossOver虚拟机软件2024有哪些功能?最新版本支持哪些游戏?

CrossOver由codewaver公司开发的类虚拟机软件,目的是使linux和Mac OS X操作系统和window系统兼容。CrossOver不像Parallels或VMware的模拟器,而是实实在在Mac OS X系统上运行的一个软件。CrossOvers能够直接在Mac上运行Windows软件与游戏,而不…

Java架构师之路七、大数据:Hadoop、Spark、Hive、HBase、Kafka等

目录 Hadoop: Spark: Hive: HBase: Kafka: Java架构师之路六、高并发与性能优化:高并发编程、性能调优、线程池、NIO、Netty、高性能数据库等。-CSDN博客Java架构师之路八、安全技术:Web安…

[前端]开启VUE之路-NODE.js版本管理

VUE前端开发框架,以Node.js为底座。用历史性的项目来学习,为了降低开发环境的影响因素,各种版本号最好能一致。前端项目也是一样。为了项目能够快速启动,Node.js的版本管理,可以带来很大的便利(node.js快速…

2023年全年回顾

本年度比较折腾,整体而言可以分为两个大的阶段,简单而言,转岗前和转岗后。 个人收获 据说程序员有几大浪漫,比如操作系统、编译器、浏览器、游戏引擎等。 之前参与过游戏引擎,现在有机会参与存储业务交付&#xff0c…

LangChain支持哔哩哔哩视频总结

是基于LangChain框架下的开发,所以最开始请先 pip install Langchain pip install bilibili-api-python 技术要点: 使用Langchain框架自带的Document loaders 修改BiliBiliLoader的源码,自带的并不支持当前b站的视频加载 源码文件修改&a…

如何在 Emacs Prelude 上使用 graphviz 的 dot 绘制流程图

文章目录 如何在Emacs Prelude上使用graphviz的dot绘制流程图 <2022-08-23 周二> 如何在Emacs Prelude上使用graphviz的dot绘制流程图 标题中的Emacs Prelude是指&#xff1a;bbatsov/prelude&#xff0c;在custom.el中添加即可&#xff1a; ;;; graphviz (prelude-re…

【高德地图】Android高德地图绘制标记点Marker

&#x1f4d6;第4章 Android高德地图绘制标记点Marker ✅绘制默认 Marker✅绘制多个Marker✅绘制自定义 Marker✅Marker点击事件✅Marker动画效果✅Marker拖拽事件✅绘制默认 Infowindow&#x1f6a9;隐藏InfoWindow 弹框 ✅绘制自定义 InfoWindow&#x1f6a9;实现 InfoWindow…

Java 中 CopyOnWriteArrayList和CopyOnWriteArraySet

什么是CopyOnWriteArrayList和CopyOnWriteArraySet CopyOnWriteArrayList和CopyOnWriteArraySet都是Java并发编程中提供的线程安全的集合类。 CopyOnWriteArrayList是一个线程安全的ArrayList&#xff0c;其内部通过volatile数组和显式锁ReentrantLock来实现线程安全。它采用…

解决ios17无法复制的问题

原代码写过一片js实现复制的代码 那段代码有问题 以下是之前写的一段有问题的原代码&#xff1a; let url "kkkkkk";const hiddenTextarea document.createElement("textarea");hiddenTextarea.style.position "absolute";hiddenTextarea.st…

ArcgisForJS如何实现添加含图片样式的点要素?

文章目录 0.引言1.加载底图2.获取点要素的坐标3.添加含图片样式的几何要素4.完整实现 0.引言 ArcGIS API for JavaScript 是一个用于在Web和移动应用程序中创建交互式地图和地理空间分析应用的库。本文在ArcGIS For JavaScript中使用Graphic对象来创建包含图片样式的点要素。 …

MIT-6.824-Lab2,Raft部分笔记|Use Go

文章目录 前记Paper6&#xff1a;RaftLEC5、6&#xff1a;RaftLAB22AtaskHintlockingstructureguide设计与编码 2BtaskHint设计与编码 2CtaskHint question后记 LEC5&#xff1a;GO, Threads, and Raftgo threads技巧raft实验易错点debug技巧 前记 趁着研一考完期末有点点空余…

软考29-上午题-【数据结构】-排序

一、排序的基本概念 1-1、稳定性 稳定性指的是相同的数据所在的位置经过排序后是否发生变化。若是排序后&#xff0c;次序不变&#xff0c;则是稳定的。 1-2、归位 每一趟排序能确定一个元素的最终位置。 1-3、内部排序 排序记录全部存放在内存中进行排序的过程。 1-4、外部…

vue使用.sync和update实现父组件与子组件数据绑定的案例

在 Vue 中&#xff0c;.sync 是一个用于实现双向数据绑定的特殊修饰符。它允许父组件通过一种简洁的方式向子组件传递一个 prop&#xff0c;并在子组件中修改这个 prop 的值&#xff0c;然后将修改后的值反馈回父组件&#xff0c;实现双向数据绑定。 使用 .sync 修饰符的基本语…

微信小程序 --- wx.request网络请求封装

网络请求封装 网络请求模块难度较大&#xff0c;如果学习起来感觉吃力&#xff0c;可以直接学习 [请求封装-使用 npm 包发送请求] 以后的模块 01. 为什么要封装 wx.request 小程序大多数 API 都是异步 API&#xff0c;如 wx.request()&#xff0c;wx.login() 等。这类 API 接口…

【精选】Java面向对象进阶——内部类

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收藏 …