MATLAB多参数结合火焰识别系统[GUI+多参数识别]
一、课题介绍
本设计为基于MATLAB的火焰烟雾火灾检测系统。传统的采用颜色的方法,误识别大,局限性强。结合火焰是实时动态跳跃的,采用面积增长率,角点和圆形度三个维度相结合的方式判断是否有火焰。该设计测试对象为视频,通过下一帧和上一帧的差异发现是否有火情,并可发出语音报警。本设计带有一个人机交互式GUI界面,界面友好。是个不错的bishe选题。
二、算法流程
结合火焰的面积增长率,角点和圆形度三个维度综合判断。并且得出每帧图像火焰部分的该三个参数,实时显示在GUI上。
三、GUI界面设计及预期图
GUI设计图
预期图
四、程序附录
1、读取视频
obj = VideoReader(uigetfile('*.mp4','选择视频'));%输入视频位置
setappdata(0,'obj',obj);%设置全局变量
Show_Frames=read(obj,1);%显示第一帧作为封面
axes(handles.axes1);
imshow(Show_Frames);
set(handles.text16,'String','视频待识别...请稍等!');
prompt={'输入图片名称序列号位数:'};
defans={'3'};%默认三位数
p=inputdlg(prompt,'输入位数',1,defans);
numzeros=str2num(p{1});
nz = strcat('%0',num2str(numzeros),'d');
numFrames = obj.NumberOfFrames;% 帧的总数
for k = 1 :5% 读取前15帧 numFrames
frame = read(obj,k);%读取第几帧
id=sprintf(nz,k);
imwrite(frame,strcat('帧系列/',id,'.jpeg'),'jpeg');% 保存帧
end
2、视频读取分析
obj=getappdata(0,'obj');
%fileName = 'test.mp4'; %读取视频函数
fileName = obj; %读取视频函数
numFrames = obj.NumberOfFrames; %帧的总数
Framerate=obj.FrameRate;
Height=obj.Height;
Height%一个对象的行
Width=obj.Width;
Width%一个对象的列
a=0.06;
a1=str2num(get(handles.edit1,'String'));
s=str2num(get(handles.edit2,'String'));
a2=str2num(get(handles.edit3,'String'));
for i=a1:s:a2