资源简介
在视频交通监控系统中,图像采集设备固定于道路、桥梁或收费站的上方,
对下方的场景进行拍摄,一般来说背景在短时间内不会变动,可以看成是静止背
景下的运动车辆目标的检测。
代码片段和文件信息
#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
相关资源
- Mastering_OpenCV_第六章车牌识别word版本
- opencv 画图库
- 3d结构光扫描 opencv
- 九点标定opencv+VS2015)
- opencv调整图像亮度对比度的
- libopencv_info.so
- 自实现双边滤波代码及测试图像
- opencv2.4.7安装程序及教学
- 虚拟视点绘制DIBR源码
- qt+zbar+opencv 环境配置
- opencv图像配准
- OpenCV利用查找表Look-up table增加图像对
- VS2017下用OpenCV实时播放RTSP视频流并截
- OpenCV 飞行游戏手势控制源码.rar
- Qt+Opencv实现四步相移
- 相机标定棋盘图
- Opencv实战项目
- opencv.txt
- 利用Opencv较高效率的视频图像传输
- opencv人脸识别源码
- libopencv_core300.dll
- 坦克大战地图生成代码
- opencv_imgproc249d.dll
- opencv_highgui249d.dll
- 高级形态学变换
- opencv.rar
- FCN模型实现图像分割配套资料分享.
- 用于车牌识别的字符模板,数字,字
- OpenCVForUnity
- opencv 3.1.0 自带例程介绍
评论
共有 条评论