GUI初学者视频功能实现

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/D_Katter/article/details/79542094

1.读取图片

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

这里写图片描述
这里写图片描述

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;

这里写图片描述
这里写图片描述

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’,‘ ’);
Xingming1)=str1;
Counter=2;
While feof(fin)==0
Str=fgetl(fin);name yuwen  shuxue yingyu】=strread(str,‘%s’,‘%d’,‘%d’,‘%d’,‘delimiter’,‘ ’);
Xingmingcounter)=name;
Counter=counter+1;
EndSethandles.listbox1,’string’,x ingming);
Handles.chengji=chengji;
Fclose(fin);
Value=get(hObject,’value’)-1;
Set(handles.edit1string’,num2str(handles.c hengji(value,:)));


这里写图片描述
这里写图片描述

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’,’ ’);
Xingming1)=name;
Chengjicounter-1,:)=【yuwen  shuxue  yingyuCounter=counter+1;
EndSethandles.box1,’string’,’xingming’);
Handles.chengji=chengji;
Fclose(fin);

这里写图片描述

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

这里写图片描述
在读取这个文件的时候,遇到一个问题,弄了很久

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

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

这里写图片描述
这里写图片描述
这里写图片描述

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=gethandles,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)

这里写图片描述
这里写图片描述

6.参考资料

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

猜你喜欢

转载自blog.csdn.net/D_Katter/article/details/79542094
今日推荐