资源简介
在视频交通监控系统中,图像采集设备固定于道路、桥梁或收费站的上方,
对下方的场景进行拍摄,一般来说背景在短时间内不会变动,可以看成是静止背
景下的运动车辆目标的检测。

代码片段和文件信息
#include “cv.h“
#include “highgui.h“
#include
#include
#include
#include
// various tracking parameters (in seconds)
const double MHI_DURATION = 0.5;
const double MAX_TIME_DELTA = 0.5;
const double MIN_TIME_DELTA = 0.05;
// 用于运动检测的循环帧数,与机器速度以及FPS设置有关
const int N = 2;
// ring image buffer
IplImage **buf = 0;
int last = 0;
// temporary images
IplImage *mhi = 0; // MHI: motion history image
IplImage *orient = 0; // orientation
IplImage *mask = 0; // valid orientation mask
IplImage *segmask = 0; // motion segmentation map
CvMemStorage* storage = 0; // temporary storage
// parameters:
// img - input video frame
// dst - resultant motion picture
// args - optional parameters
void update_mhi( IplImage* img IplImage* dst int diff_threshold )
{
double timestamp = clock()/1000.; // get current time in seconds
CvSize size = cvSize(img->widthimg->height); // get current frame size
int i idx1 = last idx2;
IplImage* silh;
CvSeq* seq;
CvRect comp_rect;
double count;
double angle;
CvPoint center;
double magnitude;
CvScalar color;
// allocate images at the beginning or
// reallocate them if the frame size is changed
if( !mhi || mhi->width != size.width || mhi->height != size.height )
{
if( buf == 0 )
{
buf = (IplImage**)malloc(N*sizeof(buf[0]));
memset( buf 0 N*sizeof(buf[0]));
}
for( i = 0; i < N; i++ )
{
cvReleaseImage( &buf[i] );
buf[i] = cvCreateImage( size IPL_DEPTH_8U 1 );
cvZero( buf[i] );
}
cvReleaseImage( &mhi );
cvReleaseImage( &orient );
cvReleaseImage( &segmask );
cvReleaseImage( &mask );
mhi = cvCreateImage( size IPL_DEPTH_32F 1 );
cvZero( mhi ); // clear MHI at the beginning
orient = cvCreateImage( size IPL_DEPTH_32F 1 );
segmask = cvCreateImage( size IPL_DEPTH_32F 1 );
mask = cvCreateImage( size IPL_DEPTH_8U 1 );
}
cvCvtColor( img buf[last] CV_BGR2GRAY ); // convert frame to grayscale
idx2 = (last + 1) % N; // index of (last - (N-1))th frame
last = idx2;
silh = buf[idx2];
// 相邻两帧的差
cvAbsDiff( buf[idx1] buf[idx2] silh ); // get difference between frames
// 对差图像做二值化
cvThreshold( silh silh diff_threshold 1 CV_THRESH_BINARY ); // and threshold it
cvUpdateMotionHistory( silh mhi timestamp MHI_DURATION ); // update MHI
// convert MHI to blue 8u image
// cvCvtScale的第四个参数 shift = (MHI_DURATION - timestamp)*255./MHI_DURATION
// 控制帧差的消失速率
cvCvtScale( mhi mask 255./MHI_DURATION
(MHI_DURATION - timestamp)*255./MHI_DURATION );
cvZero( dst );
cvCvtPlaneToPix(mask 0 0 0 dst ); // BGR0 -> dist : convert to BLUE image
// 计算运动的梯度方向以及正确的方向掩模mask
// Filter size = 3
cvCalcMotionGradient( mhi mask orient
MAX_TIME_DELTA MIN_TIME_DELTA 3
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3768 2010-05-12 10:24 例5-21\Debug\BuildLog.htm
文件 204855 2010-05-08 19:34 例5-21\Debug\motempl.exe
文件 2048 2010-05-12 10:18 例5-21\Debug\motempl.exe.em
文件 238404 2010-05-08 19:34 例5-21\Debug\motempl.ilk
文件 41984 2010-05-08 19:34 例5-21\Debug\vc60.idb
文件 77824 2010-05-08 19:34 例5-21\Debug\vc60.pdb
文件 19456 2010-05-12 10:24 例5-21\Debug\vc80.idb
文件 36864 2010-05-12 10:24 例5-21\Debug\vc80.pdb
文件 135 2007-02-24 15:18 例5-21\Makefile
文件 6613 2007-02-24 15:17 例5-21\motempl.c
文件 4160 2007-03-07 20:41 例5-21\motempl.dsp
文件 539 2007-03-07 20:41 例5-21\motempl.dsw
文件 134144 2010-05-12 10:26 例5-21\motempl.ncb
文件 53760 2010-05-08 19:35 例5-21\motempl.opt
文件 1173 2010-05-08 19:34 例5-21\motempl.plg
文件 878 2010-05-12 10:18 例5-21\motempl.sln
..A..H. 7168 2010-05-12 10:18 例5-21\motempl.suo
文件 5318 2010-05-12 10:18 例5-21\motempl.vcproj
文件 1427 2010-05-12 10:18 例5-21\motempl.vcproj.WWW-7F00BFE87CD.Administrator.user
文件 432700 2007-02-24 15:18 例5-21\video.avi
目录 0 2010-05-12 10:24 例5-21\Debug
目录 0 2010-05-12 10:18 例5-21
----------- --------- ---------- ----- ----
1273218 22
相关资源
- 基于OpenCV的数字识别468815
- 使用opencv去掉二值化图像中黑色面积
- opencv环境配置
- win10 64位下编译的opencv4.5.5库,opencv
- NVIDIAOpticalFlowSDK-79c6cee80a2df9a196f20afd6
- opencv_contrib-3.4.0.zip
- opencv2.4.9源码分析——SIFT
- 用两个摄像头实现,双目标定,双目
- opencv_traincascade训练分类器,手势识别
- opencv3.0交叉编译用parallel.cpp
- 基于opencv的图像识别识别图像中的色
- 基于openCV的识别特定颜色区域
- 基于OpenCV的分水岭算法实现
- QT+opencv+OCR 身份证号码,银行卡号识别
- opencv视频特定颜色区域识别
- 把RGB转换为HSV和HSI然后根据黄色和蓝
- opencv视觉测距
- 基于Qt和opencv的身份证号码识别系统
- opencv_ffmpeg249.dll
- SfM稀疏三维点云重建--完整工程文件
- 基于opencv的数人头程序源代码
- 利用OpenCV中的Stitcher类实现全景图像拼
- opencv实现的sift算法源码,包含了图像
- openCV 上的小波变换
- 基于OPENCV的车牌识别系统设计
- 617张国内车牌60-17bmp图片用于OpenCV正样
- hog特征提取,c版本代码
- 基于Qt5.8+OpenCV3.2的Basler多相机触发开
- 基于Opencv实现的图像纠偏
- ImageWatch2019.vsix
评论
共有 条评论