【图像处理基础】基于matlab GUI图片浏览器【含Matlab源码 1015期】
一、数字图像处理简介
图像处理基础教程链接
1 【基础教程】基于matlab图像处理(表示方法+数据结构+基本格式+类型转换+读取+点运算+代数运算)【含Matlab源码 834期】
2 【基础教程】基于matlab图像处理(读写+显示+运算+转换+变换+增强+滤波+分析+统计)【含Matlab源码 144期】
3 【基础教程】基于matlab图像增强+复原+分割【含Matlab源码 056期】
二、部分源代码
function varargout = data_process(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @data_process_OpeningFcn, ...'gui_OutputFcn', @data_process_OutputFcn, ...'gui_LayoutFcn', [] , ...'gui_Callback', []);
if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});
endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
elsegui_mainfcn(gui_State, varargin{:});
endfunction data_process_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;guidata(hObject, handles);function varargout = data_process_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;function zoom_in_Callback(~, ~, ~)
toolsmenufcn ZoomInfunction load_dir_Callback(hObject, ~, handles)
strPath = uigetdir('C:\Documents and Settings\Administrator\桌面', '选择目录');
if ~ischar(strPath)return
end
setappdata(hObject, 'strPath', strPath); %当前图片目录
str_jpg = dir([strPath '\*.jpg']);
str_bmp = dir([strPath '\*.bmp']);
str_gif = dir([strPath '\*.gif']);
str1 = [str_jpg; str_bmp; str_gif];
strAllPath = struct2cell(str1);
setappdata(hObject, 'strAllPath', strAllPath); %当前所有图片的信息
if ~isempty(str1)n = find(cell2mat(strAllPath(4, :)) == 1);if ~isempty(n)strAllPath(:, n) = [];end
end
if ~isempty(strAllPath)index = 1;set(hObject, 'UserData', index); %当前图片的索引值set(handles.pic_name, 'string', strAllPath{1, 1})M = imread(fullfile(strPath, strAllPath{1, index}));imshow(M);h = findall(handles.pic_menu, 'type', 'uimenu');delete(h);clear h;for i = 1 : size(strAllPath, 2)uimenu(handles.pic_menu, 'label', strAllPath{1,i}, 'position', i,...'callback', {@menu_callback, handles});endset(findobj('Type', 'uimenu', 'Position', index), 'Checked', 'on');set(findobj(gcf, 'Type', 'uicontrol', 'Enable', 'inactive'), 'Enable', 'on');set(findobj(gcf, 'Type', 'uimenu', 'Enable', 'off'), 'Enable', 'on');
endfunction menu_callback(obj, ~, handles)
indexPre = get(handles.load_dir, 'userData');
set(findobj('Type', 'uimenu', 'Position', indexPre), 'Checked', 'off');
index = get(obj, 'position');
set(handles.load_dir, 'userData', index);
set(obj, 'Checked', 'on');
strAllPath = getappdata(handles.load_dir, 'strAllPath');
strPath = getappdata(handles.load_dir, 'strPath');
cla;
M = imread(fullfile(strPath, strAllPath{1, index}));
imshow(M);function figure1_WindowButtonMotionFcn(hObject, eventdata, handles)
if (~get(handles.zoom_in, 'Value')) && (~get(handles.pic_crop, 'Value'))pos=get(handles.axes1,'currentpoint');xLim=get(handles.axes1,'xlim');yLim=get(handles.axes1,'ylim');if (pos(1,1)>=xLim(1)&&pos(1,1)<=xLim(2))&&(pos(1,2)>=yLim(1)&&pos(1,2)<=yLim(2))set(gcf,'Pointer','hand')elseset(gcf,'Pointer','arrow')end
endfunction figure1_WindowButtonDownFcn(hObject, eventdata, handles)
if strcmp(get(gcf,'Pointer'),'hand') && strcmp(get(handles.picNext, 'Enable'), 'on')if strcmp(get(gcf,'SelectionType'), 'alt')pos = get(gcf, 'currentpoint');set(handles.pic_menu, 'position',[pos(1,1) pos(1,2)], 'visible', 'on')elseif strcmp(get(gcf,'SelectionType'), 'normal')picNext_Callback(hObject, eventdata, handles);end
endfunction picPre_Callback(~, ~, handles)
strAllPath = getappdata(handles.load_dir, 'strAllPath');
strPath = getappdata(handles.load_dir, 'strPath');
indexPre = get(handles.load_dir, 'userData');
if indexPre > 1index = indexPre - 1;
elseindex = size(strAllPath, 2);
end
set(handles.load_dir, 'userData', index);
set(findobj(gcf, 'Type', 'uimenu', 'Position', indexPre), 'Checked', 'off');
set(findobj(gcf, 'Type', 'uimenu', 'Position', index), 'Checked', 'on');
cla;
M = imread(fullfile(strPath, strAllPath{1, index}));
imshow(M);
set(handles.pic_name, 'string', strAllPath{1, index});function picNext_Callback(~, ~, handles)
strAllPath = getappdata(handles.load_dir, 'strAllPath');
strPath = getappdata(handles.load_dir, 'strPath');
indexPre = get(handles.load_dir, 'userData');
if indexPre < size(strAllPath, 2)index = indexPre + 1;
elseindex = 1;
end
set(handles.load_dir, 'userData', index);
set(findobj(gcf, 'Type', 'uimenu', 'Position', indexPre), 'Checked', 'off');
set(findobj(gcf, 'Type', 'uimenu', 'Position', index), 'Checked', 'on');
cla;
M = imread(fullfile(strPath, strAllPath{1, index}));
imshow(M);
set(handles.pic_name, 'string', strAllPath{1, index});
function zoom_in_menu_Callback(hObject, eventdata, handles)
val = get(handles.zoom_in, 'Value');
set(handles.zoom_in, 'Value', ~val);
zoom_in_Callback(hObject, eventdata, handles);function figure1_WindowKeyPressFcn(hObject, eventdata, handles)
switch eventdata.Keycase {'pageup', 'leftarrow', 'uparrow'}picPre_Callback(handles.picPre, eventdata, handles);case {'pagedown', 'rightarrow', 'downarrow'}picNext_Callback(handles.picNext, eventdata, handles);
end
三、运行结果
四、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1] 蔡利梅.MATLAB图像处理——理论、算法与实例分析[M].清华大学出版社,2020.
[2]杨丹,赵海滨,龙哲.MATLAB图像处理实例详解[M].清华大学出版社,2013.
[3]周品.MATLAB图像处理与图形用户界面设计[M].清华大学出版社,2013.
[4]刘成龙.精通MATLAB图像处理[M].清华大学出版社,2015.
[5]陈浩,方勇,朱大洲,王成,陈子龙.基于蚁群算法的玉米植株热红外图像边缘检测[J].农机化研究. 2015,37(06)
【图像处理基础】基于matlab GUI图片浏览器【含Matlab源码 1015期】相关推荐
- 【信号处理】基于Matlab GUI数字均衡器设计,源码附上
[信号处理]基于Matlab GUI数字均衡器设计,源码附上 数字均衡器是一种常用于音频信号处理的技术,可以有效地补偿声音中的频率失真,提高音质.在这篇文章中,我们将介绍如何使用Matlab GUI进 ...
- 【过程控制】基于matlab GUI串级控制【含Matlab源码 2385期】
⛄一.简介 1 交互系统整体外观展示 该系统基于 MATLAB GUI 与 Simulink 联合开发, 实现对串级控制系统特性的研究与分析.学生在学习串级控 制有关知识后可使用该应用进行知识回顾.界 ...
- 【图像处理】基于分形插值算法实现换脸含Matlab源码
1 简介 2 部分代码 function result = skin(Y,Cb,Cr)a = 25.39;b = 14.15;ecx = 1.72;ecy = 2.43;sita = 2.64;cx ...
- 【Kivy自学笔记】Python开发App必备!Kivy基础控件详解(含视频源码)
文章目录 基础控件 窗口坐标系 尺寸(通用) 位置(通用) Python与kv文件如何实现互相访问(Kivy中的特殊关键字) Button 按钮 Label 标签 Image 图片 TextInput ...
- 很棒的图片浏览器代码,源码研究
重要声明: 文章为原创,代码从网上扒下来,进行整合和Bug修复运用到自己的项目中或仿用户量超大的应用,比如微信.来往.美丽说.淘宝.豆瓣等等. 1. 引入了著名的Universalimageloade ...
- matlab svm 语音识别,【情感识别】基于matlab支持向量机(SVM)的语音情感识别【含Matlab源码 543期】...
一.简介 支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本.非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数 ...
- 【图像处理】基于matlab GUI多功能图像处理系统【含Matlab源码 1876期】
⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[图像处理]基于matlab GUI多功能图像处理系统[含Matlab源码 1876期] 点击上面蓝色字体,直接付费下载,即可. 获取代码 ...
- 【图像处理基础】基于matlab霍夫变换直线识别(拟合角平分线)【含Matlab源码 2575期】
⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[图像处理基础]基于matlab霍夫变换直线识别(拟合角平分线)[含Matlab源码 2575期] 点击上面蓝色字体,直接付费下载,即可. ...
- 【图像去噪】基于matlab GUI butterworth+中值+维纳+小波图像去噪【含Matlab源码 520期】
⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[图像去噪]基于matlab GUI butterworth+中值+维纳+小波图像去噪[含Matlab源码 520期] 获取代码方式2: ...
- 【电力预测】基于matlab GUI灰色模型电力负荷预测【含Matlab源码 769期】
一.获取代码方式 获取代码方式1: 完整代码已上传我的资源: [电力负荷预测]基于matlab GUI灰色模型电力负荷预测[含Matlab源码 769期] 获取代码方式2: 通过订阅紫极神光博客付费专 ...
最新文章
- 深度神经网络的分布式训练概述:常用方法和技巧全面总结
- iOS之从N个数里面取M个数的组合算法
- c语言字符屏幕,C语言字符屏幕函数 - 编程资料 - Powered 万人网络编程学院 bcxy.yinese.com...
- 数据库方面的操作示例
- JAXB注解 java 关于xml的注解,自动生成xml文件 - @XML***
- 使用Junit对Android应用进行单元测试
- arXiv上引用文章在bibtex下的引用格式
- scipy的安装教程
- 扫盲:什么是steam令牌验证器?哪些行为会触发steam交易限制
- 关于ssh整合后struts2拦截器不起作用(blog-1)
- Chrome 的人都需要知道的「神器」扩展:「油猴」使用详解
- emlog海报生成插件
- 上海国拍服务器位置,上海国拍系统的重大漏洞
- 虚拟现实的起源、趋势及应用
- python换照片底色_Python 利用OpenCV给照片换底色的示例代码
- 赵运泓: 12:3下周黄金行情走势分析
- 为什么App安装要做个性化
- 8个字说明什么是领导力
- java 解析m3u8的实例_使用java线程池批量下载m3u8。合并mp4.
- 2022年全球市场电视遥控器总体规模、主要生产商、主要地区、产品和应用细分研究报告