matlab运行结果图像,求大神帮帮忙 为什么运行结果的图像是倒过的,代码如下...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

function x = Wh

%初始化背景所需要的帧数

N=15;%背景更新参数

mov = aviread('smoke.AVI');%读取AVI视频文件

%获取视频帧数

dimension = size(mov);

frameQTY = dimension(2);

M=mov;

tmFr = rgb2gray(frame2im(mov(1)));%变成灰度图

s = size(tmFr);

scrsz = get(0,'ScreenSize');%获取屏幕大小

h1 = figure('position', [1,1,s(2)*2,s(1)*2]);

cdataSum = int16(zeros(s));

sedisk = strel('rectangle',[2,2]);

sedisk2 = strel('rectangle',[3,2]);

count = zeros(s);

for c1 = 1:frameQTY;

colorFrC = M(c1);%获取第i帧

frC = rgb2gray(frame2im(colorFrC));

frC = im2frame(frC, gray(256));

f = int16(frC.cdata);

if( c1<= N)

%前N帧用于背景建模

movie(h1, frC, 1, 15, [0,s(1),0,0]);%播放第i帧

cdataSum = cdataSum + f;

else

%开始运动检测,首先计算出背景

if(c1==N+1)cdB = cdataSum/N;

else colorFrC1 = M(c1-N);%获取第c1-N帧

frC1 = rgb2gray(frame2im(colorFrC1));

frC1 = im2frame(frC1, gray(256));

f1 = int16(frC1.cdata);

cdataSum=cdataSum+f-f1;%背景更新

cdB=cdataSum/N;

cdB = int16(cdB);

end

f2 = abs( f - cdB );

f2 = uint8(f2);

bwf = f2;

bw = find( f2 < 45 );

bwf(bw) = 0;

bw = find( f2 >= 45 );

bwf(bw) = 255;

cdB = uint8(cdB);

f3 = imdilate(bwf, sedisk);

f3 = imerode(f3, sedisk);

noSmall = bwareaopen( f3, 150 );%删除小面积

%标签矩阵

L = bwlabel( noSmall, 4 );

tagged( :,: ) = frC.cdata;

if any( L(:) )

stats = regionprops(L,'boundingbox','filledArea');

for label = 1:length(stats)

box = stats(label);

if( box.FilledArea < 200 || box.FilledArea/(s(1)*s(2)) > 0.3 )

continue;

end

box = box.BoundingBox;

left=round(box(1));

top=round(box(2));

right=round(box(1)+box(3)-1);

bottom=round(box(2)+box(4)-1);

if( abs(top - bottom)/abs(right - left) > 4 || abs(right - left)/abs(top - bottom) > 4 )

continue;

end

tagged(top,left:right)=1; %画矩形框%

tagged(bottom,left:right)=1;

tagged(top:bottom,left)=1;

tagged(top:bottom,right)=1;

end

end

ff = [frC.cdata, cdB;f3, tagged];%正常 背景 差分 跟踪

ff = im2frame(ff,gray(256));

movie(h1, ff, 1, 15, [0,0,0,0]);%播放第i帧

end% end of if-else

end%--播放结束

end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值