GUI初学者视频功能实现

这篇博客适合GUI初学者,介绍了如何在MATLAB中实现图像读取、边缘检测、成绩查询系统设计、读取文本文件及播放视频等功能。通过实例详细讲解了每个步骤,包括遇到的问题及解决方案,提供了丰富的MATLAB代码示例。
摘要由CSDN通过智能技术生成

####1.读取图片

//选择图片路径
[filename pathname]=uigetfile({‘*.jpg,’*.bmp’,’*.gif’},’选择图片’);
//合成路径+文件名
str=[pathname filename];
//读取图片
im=imread(str);
//使用第一个axes
Axes=(handle.axes1);
//显示图片
Imshow(im);
//关闭
Close(gif);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GZq9PCOh-1661566600594)(//img-blog.csdn.net/20180313154812911?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L0RfS2F0dGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QaPSqeVA-1661566600595)(//img-blog.csdn.net/20180313154834937?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L0RfS2F0dGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)]

####2.边缘检测

Button  group 功能函数
Function uibuttongroup1.selectionChangedFen(hObject,eventdata.handles)
//全局变量声明
Global im
//特征提取
Str=get(hObject,’string’);   功能函数里面字符串的提取
//使用图片
Axes(handles.axes1);
//选择项的功能处理
Switch str
Case’
Imshow(im);
Case’sobel’
BW=edge(rgb2gray(im),’sobel’);
Imshow(BW);
Case’prewitt’
BW=edge(rgb2gray(im),’prewitt’);
Imshow(BW);
case’canny’
BW=edge(rgb2gray(im),’canny’);
Imshow(BW);
End;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LjM1Obf0-1661566600595)(//img-blog.csdn.net/20180313155157967?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L0RfS2F0dGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fwLF2J15-1661566600596)(//img-blog.csdn.net/20180313155145115?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L0RfS2F0dGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)]

MATLAB的变量:

在matlab中使用变量可以不同声明,在使用时,程序会自动给其分配内存
在引入变量后,涉及到存储的问题,存在基本工作区间和函数区间
变量储存在基本工作区间,函数储存在函数区间,在相应空间使用的变量只在对应的区间有效。Assign函数可以实现跨用
变量分为3中类型,局部变量,全局变量,永久变量
局部变全局,使用global  a   或者使用hanles.chengji=chengji
SWITCH语句一般是用在functionselcetion中,跟C语言中用法一样
Switch  expression (数值,字符,字符串)
Case   value1(数值,字符,字符串或者多个数值的组合,其中两种表达方式)
Value1:表达一:1|2  表达二:  {3.4}
Statement1
Case value2 
Statement2
End
在执行case语句后,若是没有匹配的,执行otherwise,可以省略

####3.成绩查询系统设计

fin=fopen(‘chengji。txt’,‘r’);
str=fgetl(fin);
【str1  str2  str3  str4】=strread(str,‘%s’,‘%s’,‘%s’,‘%s’,‘delimiter’,‘ ’);
Xingming(1)=str1;
Counter=2;
While feof(fin)==0
Str=fgetl(fin);
【name yuwen  shuxue yingyu】=strread(str,‘%s’,‘%d’,‘%d’,‘%d’,‘delimiter’,‘ ’);
Xingming(counter)=name;
Counter=counter+1;
End;
Set(handles.listbox1,’string’,x ingming);
Handles.chengji=chengji;
Fclose(fin);
Value=get(hObject,’value’)-1;
Set(handles.edit1’string’,num2str(handles.c hengji(value,:)));



[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-loxyTQza-1661566600596)(//img-blog.csdn.net/20180313155326589?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L0RfS2F0dGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2VQ8BEJA-1661566600596)(//img-blog.csdn.net/20180313155334160?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L0RfS2F0dGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)]

####4.读取文本文件
######4.1读取txt文件

fin=fopen(‘chengji,txt’,’r’);
str=fgetl(fin);
【str1  str2  str3  str4】=(str ,‘%s’,’%s’,’%s’,’%s’,’delimiter’,’ ’);
Xingming(1)=str1;
Counter=2;
While feof(fin)==0
Str=fgetl(fin);
[name  yuwen  shuxue  yingyu ]=strread(str,’%s,’’%d’,’%d’,’%d’,’delimiter’,’ ’);
Xingming(1)=name;
Chengji(counter-1,:)=【yuwen  shuxue  yingyu】
Counter=counter+1;
End;
Set(handles.box1,’string’,’xingming’);
Handles.chengji=chengji;
Fclose(fin);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OwJ2zuXI-1661566600597)(//img-blog.csdn.net/20180313155505178?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L0RfS2F0dGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)]
######4.2读取excel文件

【filename  pathname】=uigetfile(‘*.ls’,’choose a  file’);
Str=[filename pathname];
Set(handles.edit3,’string’,str);
[chengji  xingming(1)]=xlsread(str);
Set(handles.listbox1,’string’xingming(:,1));
Handles.chengji=chengji;
Guidata(hObject,handles);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s7jA78kp-1661566600597)(//img-blog.csdn.net/20180313155650854?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L0RfS2F0dGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)]
在读取这个文件的时候,遇到一个问题,弄了很久

Value=get(hObject,’value’)-1;
Set(handles.edit1,’string’,num2str(handles.chenhji(value,;))
使用了num2,实现了数值类型的转换,在excel表格中的数据一定要符合转换后的类型,不然是会出错的。
其中还遇到了一个问题,就是在handles.edit1的时候,这个edit1或者edit2是要根据自己放的图框进行匹配的,
当时没注意,调试了很久,一直说是没有定义这个变量,因此,出现类似的问题,应该检查硬件配置和软件配置是否对应。

######4.3可以有选择性的对文件进行读取

[filename pathname]=uigetfile({‘*.xls’,’excel files(*.xls)’,’*txt’,’txt files(*.txt)’,’*.*’,’*all files(*.*)’},’choose a file’);
L=length(filename);
L<5;
Errordlg(‘wrong file’,’file open error’);
Return;
End
Test =filename(1,L-3:L);
Switch  test
  Case ‘.txt’
Str=[pathname filename];
Set(handles.edit3,’string’,’str’);
Fin=fopen(str,’r’);
Str=fgetl(fin);
[str1 str2 str3  str4]=strread(str,’%s’,’%s’,%s’’,’%s’, ‘delimiter’,’  ’)
Xingming(1)=str1
Counter=2
While feof(fin)==0
Str=fgetl(fin);
[name yuwen  shuxue yingyu]=(str,’%s’,’%d’,’%d’,’&d’,’ delimiter’,’ ’);
Xingming(counter)=name;
Chengji(counter-1,:)=[yuwen  shuxue  yingyu];
Counter=counter+!;
End
Set(handles.listbox1,’string’,xingming);
Handles,chengji=chengji;
Fclose(fin);
Guidata(hObject,handles);
Case ‘.xls’
Str=filename pathname];
Set(handles.edit3,’string,’string);
[chengji  xingming]=xlsread(str);
Set(handles.listbox1,’string’,xingming(‘’,1))
Handles.chengji=chengji;
Guidata(hObject,handls);
Otherwise
Errordlg(‘wrong file’,’file open error’

在学习第三个模块的时候,出现了语法中括号不对称的问题,最后是利用{}这个大括号替换()才解决的问题,
说明在语法方面存在括号的使用规则

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GR6YLxqx-1661566600597)(//img-blog.csdn.net/20180313160406517?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L0RfS2F0dGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YSt9MkPt-1661566600598)(//img-blog.csdn.net/20180313160421906?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L0RfS2F0dGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uxj905SQ-1661566600598)(//img-blog.csdn.net/20180313160430181?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L0RfS2F0dGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)]

####5.播放视频插件

Pos[0  0  0  0];
Moviecontrol=actxcontrol(wmplayer.ocx.7,pos);
Handles.moviecontrol=moviecontrol;
Mp=handles.moviecontrol.controls;
Handles.Output=mp;
【filename pathname】=uigetfile(‘*.*’,’please select a movie….’);
If~(filename)	
Return
End
Handles.moviecontrol.url=【pathname filename】;
Handles.moviecomtrol.controls.play;
Units=get(handles,fiure1.’units’);
Set(handled.figure1,’units’,’pixels’);
Pos=get(handles.figure1,’position’)
Set(handles.fihure1,’units’,units):
Pos[0  0   pos(3 :4 )];
Move(handles.moviecontrol,pos)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iSTxk118-1661566600598)(//img-blog.csdn.net/20180313160539963?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L0RfS2F0dGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1l0Vy2ko-1661566600598)(//img-blog.csdn.net/20180313160553401?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L0RfS2F0dGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)]

####6.参考资料

  1. 网络视频: MATLAB初学者10个视频
  2. MATLAB中文论坛
  3. 《MATLAB GUI设计入门与实践 》
  4. 《罗华飞GUI学习手记》
  5. 源代码下载
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大话硬件

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值