• 大小: 560KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-16
  • 语言: 其他
  • 标签: OpenCV  

资源简介

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

资源截图

代码片段和文件信息

#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.embed.manifest

     文件     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


评论

共有 条评论