[点击百度快照]基于MATLAB的火焰烟雾火灾检测系统[GUI界面,参数检测]

[点击百度快照]基于MATLAB的⽕焰烟雾⽕灾检测系统[GUI界⾯,参数检测]
四、程序附录
obj = VideoReader(uigetfile(’*.mp4’,‘选择视频’));%输⼊视频位置
setappdata(0,‘obj’,obj);%设置全局变量
Show_Frames=read(obj,1);%显⽰第⼀帧作为封⾯
axes(handles.axes1);
imshow(Show_Frames);
16,‘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
15, ‘String’, strcat(’#’,num2str(i)));
Process_Frames=read(obj,i); %读取当前帧
axes(handles.axes2);
imshow(Process_Frames);%显⽰帧图像
hsv=rgb2hsv(Process_Frames); %获取当前帧H、S、V分量
h=hsv(:,:,1);axes(handles.axes8);imshow(h);title('H分量图')
s=hsv(:,:,2);axes(handles.axes9);imshow(s);title('S分量图')
v=hsv(:,:,3);axes(handles.axes10);imshow(v);title('V分量图')
[row,col]=find((h>23/24 | h<1/24));      %出当前帧红⾊背景的像素坐标
I_bw=zeros(Height,Width);
leg=length(row);
for j=1:leg
I_bw(row(j),col(j))=1;
end
I_bw=bwareaopen(I_bw,60);                  %去除杂质、删除⼩⾯积对象
axes(handles.axes11);
axes(handles.axes11);
imshow(I_bw);
eps复合保温板
title('去除杂质⼩⾯积对象');
[row,col]=find(Process_Frames(:,:,1)>235 ); %获取当前帧R矩阵
I_r_bw=zeros(Height,Width);
leg=length(row);
for j=1:leg
I_r_bw(row(j),col(j))=1;
end
I_r_bw=bwareaopen(I_r_bw,50);
[row,col]=find(I_bw);                        %获取当前帧最终⽕焰图像
leg=length(row);
for j=1:leg
I_r_bw(row(j),col(j))=1;
end
K=imfill(I_r_bw,'holes');
A=nowA(K);
if leg~=0                      %判断是否有红⾊分量,有继续执⾏,⽆识别下⼀张图    Process_Frames0=read(obj,i-3);                %读取上⼀帧
hsv0=rgb2hsv(Process_Frames0);                %获取上⼀帧H、S、V分量    h0=hsv0(:,:,1);
s0=hsv0(:,:,2);
v0=hsv0(:,:,3);
[row,col]=find((h0>23/24 | h0<1/24)  );
蜂盘
I_bw0=zeros(Height,Width);
leg0=length(row);
for j=1:leg0
I_bw0(row(j),col(j))=1;
end
I_bw0=bwareaopen(I_bw0,60);
[row,col]=find(Process_Frames0(:,:,1)>235 );
I_r_bw0=zeros(Height,Width);
leg0=length(row);
for j=1:leg0
I_r_bw0(row(j),col(j))=1;
end
I_r_bw0=bwareaopen(I_r_bw0,50);
[row,col]=find(I_bw0);
leg0=length(row);
for j=1:leg0
I_r_bw0(row(j),col(j))=1;
end
if leg0~=0            %判断上⼀帧是否有红⾊分量
K0=imfill(I_r_bw0,'holes');
A0=beforeA(K0);
else
A0=0;
end
升降机构
itedge=edge(K,'canny');
C=yuanxingdu(itedge,K,A)  %计算圆形度
J=abs(A-A0)/A0            %计算⽕焰⾯积增长性
cnt=Harrris(itedge,a)      %计算⾓点数
11, 'String', C);
12, 'String', J);
13, 'String', cnt);
% % 显⽰
if (J>0 & C<1)
16, ‘String’, ‘请注意:有⽕灾’);
end
else
16, 'String', '⽆有⽕灾');
end
end
16, ‘String’, ‘识别完毕!’);
3、图⽚分析
[filename,pathname] = uigetfile({’.jpeg;.bmp;.tif;.png;*.gif’,‘All Image Files’},‘请选择⼀张图⽚’); if filename == 0%如果没有选择,直接返回即可
return;
end
strfullname = strcat(pathname,filename);%取得图像⽂件全名
I = imread(strfullname);%读取图⽚
axes(handles.axes2)
imshow(I);%显⽰图⽚
title(‘测试图像’)
15, 'String', '识别单图');
Process_Frames=I;                %读取当前帧
hsv=rgb2hsv(Process_Frames);              %获取当前帧H、S、V分量
h=hsv(:,:,1);axes(handles.axes8);imshow(h);title('H分量图')
s=hsv(:,:,2);axes(handles.axes9);imshow(s);title('S分量图')
v=hsv(:,:,3);axes(handles.axes10);imshow(v);title('V分量图')
[row,col]=find((h>23/24 | h<1/24));      %出当前帧红⾊背景的像素坐标
Height=1080;                            %⼀个对象的⾏
Width=1920;                              %⼀个对象的列
I_bw=zeros(Height,Width);
leg=length(row);
飞行模拟舱
for j=1:leg
I_bw(row(j),col(j))=1;
end
滚珠滑轨I_bw=bwareaopen(I_bw,60);                  %去除杂质、删除⼩⾯积对象
axes(handles.axes11);
imshow(I_bw);
title('去除杂质⼩⾯积对象');
[row,col]=find(Process_Frames(:,:,1)>235 ); %获取当前帧R矩阵
I_r_bw=zeros(Height,Width);
leg=length(row);
for j=1:leg
I_r_bw(row(j),col(j))=1;
end
I_r_bw=bwareaopen(I_r_bw,50);
[row,col]=find(I_bw);                        %获取当前帧最终⽕焰图像
leg=length(row);
for j=1:leg
I_r_bw(row(j),col(j))=1;
end
K=imfill(I_r_bw,'holes');
A=nowA(K);
if leg~=0                      %判断是否有红⾊分量,有继续执⾏,⽆识别下⼀张图
if leg~=0                      %判断是否有红⾊分量,有继续执⾏,⽆识别下⼀张图    %Process_Frames0=read(obj,i-3);                %读取上⼀帧
Process_Frames0=imread('帧系列/003.jpeg');
hsv0=rgb2hsv(Process_Frames0);                %获取上⼀帧H、S、V分量    h0=hsv0(:,:,1);
s0=hsv0(:,:,2);
v0=hsv0(:,:,3);
[row,col]=find((h0>23/24 | h0<1/24)  );
I_bw0=zeros(Height,Width);
leg0=length(row);
for j=1:leg0
I_bw0(row(j),col(j))=1;
end
I_bw0=bwareaopen(I_bw0,60);
[row,col]=find(Process_Frames0(:,:,1)>235 );
I_r_bw0=zeros(Height,Width);
leg0=length(row);
for j=1:leg0
I_r_bw0(row(j),col(j))=1;
end
I_r_bw0=bwareaopen(I_r_bw0,50);
[row,col]=find(I_bw0);
leg0=length(row);
for j=1:leg0
I_r_bw0(row(j),col(j))=1;
end
if leg0~=0            %判断上⼀帧是否有红⾊分量
K0=imfill(I_r_bw0,'holes');
A0=beforeA(K0);
else
A0=0;
end
itedge=edge(K,'canny');
a=0.06
C=yuanxingdu(itedge,K,A)  %计算圆形度
J=abs(A-A0)/A0            %计算⽕焰⾯积增长性
cnt=Harrris(itedge,a)      %计算⾓点数
强制系统11, 'String', C);
12, 'String', J);
13, 'String', cnt);
% % 显⽰
if (J>0 & C<1)
16, ‘String’, ‘请注意:有⽕灾’);
end
else
16, 'String', '⽆有⽕灾');
end

本文发布于:2024-09-22 15:29:41,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/103466.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:视频   读取   计算   是否   系统   图像
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议