车速检测
这是我的第一篇博客哈哈,、受到疫情的影响,在家完成模式识别的作业。本次是模式识别作业的其中一个,车速检测,在此记录一下,好日后查找,当然,如果能对大家有帮助,我将会很高兴滴。话不多说,我们看重点。
基于视频的实时车速检测有两种方法,一种是目标检测法,另一种是线圈法。前者就是检测出每一帧中车的位置,然后根据相机标定的值得到车在实际道路上的位移,通过距离除以时间就能得到车速。后者是在固定的两个位置分别设置两个虚拟线圈(为啥叫虚拟线圈,因为实际上这两个位置是人为圈出来的)。当汽车经过虚拟线圈时,这个区域的像素值会改变。当检测到像素值发生改变时,记录当前帧数,两个帧数相减得到汽车经过两个虚拟线圈的帧数,然后根据视频帧率得到时间,最后就是距离除以时间就能得到车速。
整体检测流程如下图所示
可视化虚拟线圈
这个对车速检测没有任何关系,纯粹是是我们能肉眼看到设置的线圈的位置,毕竟眼见为实嘛。
在图像上画线
function [ dest ] = DrawVirtualbox( src, pt, wSize, lineSize, color )
% %将图像画上有颜色的框图,如果输入是灰度图,先转换为彩色图像,再画框图
% 图像矩阵
% 行向量方向 是 y
% 列向量方向 是 x
%----------------------------------------------------------------------
%输入:
% src: 原始图像,可以为灰度图,可为彩色图
% pt: 左上角坐标 [x1, y1]
% wSize: 框的大小 [wx, wy]
% lineSize: 线的宽度
% color: 线的颜色 [r, g, b]
%----------------------------------------------------------------------
%输出:
% dest: 画好了的图像
%----------------------------------------------------------------------
%flag=1: 有缺口的框
%flag=2: 无缺口的框
flag = 2;
%判断输入参数个数
if nargin < 5
color = [255 255 0];
end
if nar