视频识别基于matlab视频车流量统计含Matlab源码 504期
Posted 紫极神光
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了视频识别基于matlab视频车流量统计含Matlab源码 504期相关的知识,希望对你有一定的参考价值。
一、简介
基于matlab视频的车流量统计
二、源代码
% 创建系统对象,用于读入待处理视频
filename = \'viptraffic.avi\';
hvfr = vision.VideoFileReader(filename, \'ImageColorSpace\', \'RGB\');
% 创建系统对象,用于色彩空间转换
hcsc = vision.ColorSpaceConverter(\'Conversion\', \'RGB to intensity\');
% 创建系统对象,用于用高斯混合模型检测背景
hfdet = vision.ForegroundDetector(...
\'NumTrainingFrames\', 5, ... % 取连续五帧进行检测背景
\'InitialVariance\', (30/255)^2); % 初始标准差为 30/255
% 创建系统对象,用于检测出包含汽车运动的图像块
hblob = vision.BlobAnalysis( ...
\'CentroidOutputPort\', false, ...
\'AreaOutputPort\', true, ...
\'BoundingBoxOutputPort\', true, ...
\'OutputDataType\', \'single\', ...
\'MinimumBlobArea\', 250, ...
\'MaximumBlobArea\', 3600, ...
\'MaximumCount\', 80);
% 创建系统对象,用于对检测出的运动车辆进行框画
hshapeins = vision.ShapeInserter( ...
\'BorderColor\', \'Custom\', ...
\'CustomBorderColor\', [0 255 0]);
% 创建系统对象,用于标注检测到车辆的个数
htextins = vision.TextInserter( ...
\'Text\', \'%4d\', ...
\'Location\', [1 1], ...
\'Color\', [255 255 255], ...
\'FontSize\', 12);
% 创建系统对象,用于显示结果
sz = get(0,\'ScreenSize\');
pos = [20 sz(4)-300 200 200];
hVideoOrig = vision.VideoPlayer(\'Name\', \'Original\', \'Position\', pos);
pos(1) = pos(1)+220; %在右侧建立下一个视窗
hVideoFg = vision.VideoPlayer(\'Name\', \'Foreground\', \'Position\', pos);
pos(1) = pos(1)+220;
hVideoRes = vision.VideoPlayer(\'Name\', \'Results\', \'Position\', pos);
line_row = 23; % 定义感兴趣区域(ROI)
% 以下的程序段为对输入的视频图像进行处理
while ~isDone(hvfr)
image = step(hvfr); % 读入视频的每一帧
y = step(hcsc, image); % 将彩色图像转换成灰度图像
% 采用自动白平衡算法去除灰度突变
y = y-mean(y(:));
fg_image = step(hfdet, y); % 检验背景
% 采用数学形态学,在前景图像中检测变化的联通图像块区域的面积
[area, bbox] = step(hblob, fg_image);
image_out = image;
image_out(22:23,:,:) = 255; % 仅对经过白线后的车辆进行计数
image_out(1:15,1:30,:) = 0; % 将背景置为黑色
Idx = bbox(:,2) > line_row; %选择感兴趣区域.
% 当在感兴趣区域中,联通图像块的比例占整个变化区域的40%以上时,便认为是车辆
ratio = zeros(length(Idx),1);
ratio(Idx) = single(area(Idx,1))./single(bbox(Idx,3).*bbox(Idx,4));
ratiob = ratio > 0.4;
count = int32(sum(ratiob)); % 车辆的数量
bbox(~ratiob,:) = int32(-1);
% 将检测出的车辆圈画出来
image_out = step(hshapeins, image_out, bbox);
% 显示检测汽车的数量
image_out = step(htextins, image_out, count);
三、运行结果
四、备注
版本:2014a
完整代码或代写加1564658423
以上是关于视频识别基于matlab视频车流量统计含Matlab源码 504期的主要内容,如果未能解决你的问题,请参考以下文章
人脸表情识别基于matlab GUI CNN人脸表情识别含Matlab源码 787期
手势识别基于matlab GUI肤色手势识别含Matlab源码 716期
手势识别基于matlab GUI肤色手势识别(带面板)含Matlab源码 1650期