資源簡介
用Opencv和vs2012編寫的跟蹤視頻內(nèi)運(yùn)動物體的代碼,內(nèi)附有測試視頻

代碼片段和文件信息
#include?“cv.h“
#include?“highgui.h“
#include?
#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;
const?int?N?=?3;
//
const?int?CONTOUR_MAX_AERA?=?16;
//?ring?image?buffer
IplImage?**buf?=?0;
int?last?=?0;
//?temporary?images
IplImage?*mhi?=?0;?//?MHI:?motion?history?image
//CvFilter?filter?=?CV_GAUSSIAN_5x5;
CvConnectedComp?*cur_comp?min_comp;
CvConnectedComp?comp;
CvMemStorage?*storage;
CvPoint?pt[4];
//??參數(shù):
//??img?–?輸入視頻幀
//??dst?–?檢測結(jié)果
void??update_mhi(?IplImage*?img?IplImage*?dst?int?diff_threshold?)
{
????double?timestamp?=?clock()/100.;?//?get?current?time?in?seconds
????CvSize?size?=?cvSize(img->widthimg->height);?//?get?current?frame?size
????int?i?j?idx1?idx2;
????IplImage*?silh;
????uchar?val;
????float?temp;
????IplImage*?pyr?=?cvCreateImage(?cvSize((size.width?&?-2)/2?(size.height?&?-2)/2)?8?1?);
????CvMemStorage?*stor;
????CvSeq?*cont?*result?*squares;
????CvSeqReader?reader;
????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?????????{
????????????cvReleaseImage(?&buf[i]?);
????????????buf[i]?=?cvCreateImage(?size?IPL_DEPTH_8U?1?);
????????????cvZero(?buf[i]?);
????????}
????????cvReleaseImage(?&mhi?);
????????mhi?=?cvCreateImage(?size?IPL_DEPTH_32F?1?);
????????cvZero(?mhi?);?//?clear?MHI?at?the?beginning
????}?//?end?of?if(mhi)
????cvCvtColor(?img?buf[last]?CV_BGR2GRAY?);?//?convert?frame?to?grayscale
????idx1?=?last;
????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?30?255?CV_THRESH_BINARY?);?//?and?threshold?it
????
????cvUpdateMotionHistory(?silh?mhi?timestamp?MHI_DURATION?);?//?update?MHI
????cvCvtScale(?mhi?dst?255./MHI_DURATION?
??????(MHI_DURATION?-?timestamp)*255./MHI_DURATION?);????
????cvCvtScale(?mhi?dst?255./MHI_DURATION?0?);????
????
????//?中值濾波,消除小的噪聲
????cvSmooth(?dst?dst?CV_MEDIAN?3?0?0?0?);
????
????//?向下采樣,去掉噪聲
????cvPyrDown(?dst?pyr?7?);
????cvDilate(?pyr?pyr?0?1?);??//?做膨脹操作,消除目標(biāo)的不連續(xù)空洞
????cvPyrUp(?pyr?dst?7?);
????//
????//?下面的程序段用來找到輪廓
????//
????//?Create?dynamic?structure?and?sequence.
????stor?=?cvCreateMemStorage(0);
????cont?=?cvCreateSeq(CV_SEQ_ELTYPE_POINT?sizeof(CvSeq)?sizeof(CvPoint)??stor);
????
????//?找到所有輪廓
????cvFindContours(?dst?stor?&cont?sizeof(CvContour)?
????????????????????CV_RETR_LIST?CV_CHAIN_APPROX_SIMPLE?cvPoint(00));
/*
????for(;cont;cont?=?con
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2015-10-27?17:07??ConsoleApplication1\
?????目錄???????????0??2015-10-27?17:06??ConsoleApplication1\ConsoleApplication1\
?????文件????16580608??2015-10-27?17:07??ConsoleApplication1\ConsoleApplication1.sdf
?????文件?????????924??2015-10-27?16:58??ConsoleApplication1\ConsoleApplication1.sln
?????文件???????21504??2015-10-27?17:07??ConsoleApplication1\ConsoleApplication1.v11.suo
?????文件????????5248??2015-10-27?17:04??ConsoleApplication1\ConsoleApplication1\1.cpp
?????文件????????5127??2015-10-27?17:02??ConsoleApplication1\ConsoleApplication1\ConsoleApplication1.vcxproj
?????文件?????????939??2015-10-27?17:02??ConsoleApplication1\ConsoleApplication1\ConsoleApplication1.vcxproj.filters
?????目錄???????????0??2015-10-27?17:07??ConsoleApplication1\ConsoleApplication1\Debug\
?????文件??????211718??2015-10-27?17:05??ConsoleApplication1\ConsoleApplication1\Debug\1.obj
?????文件?????????626??2015-10-27?17:05??ConsoleApplication1\ConsoleApplication1\Debug\cl.command.1.tlog
?????文件???????20218??2015-10-27?17:05??ConsoleApplication1\ConsoleApplication1\Debug\CL.read.1.tlog
?????文件?????????366??2015-10-27?17:05??ConsoleApplication1\ConsoleApplication1\Debug\CL.write.1.tlog
?????文件??????????69??2015-10-27?17:05??ConsoleApplication1\ConsoleApplication1\Debug\ConsoleApplication1.lastbuildstate
?????文件????????3067??2015-10-27?17:05??ConsoleApplication1\ConsoleApplication1\Debug\ConsoleApplication1.log
?????文件???????????2??2015-10-27?17:05??ConsoleApplication1\ConsoleApplication1\Debug\li
?????文件???????????2??2015-10-27?17:05??ConsoleApplication1\ConsoleApplication1\Debug\li
?????文件???????????2??2015-10-27?17:05??ConsoleApplication1\ConsoleApplication1\Debug\li
?????文件???????????2??2015-10-27?17:05??ConsoleApplication1\ConsoleApplication1\Debug\li
?????文件???????????2??2015-10-27?17:05??ConsoleApplication1\ConsoleApplication1\Debug\li
?????文件???????????2??2015-10-27?17:05??ConsoleApplication1\ConsoleApplication1\Debug\li
?????文件???????????2??2015-10-27?17:05??ConsoleApplication1\ConsoleApplication1\Debug\li
?????文件???????????2??2015-10-27?17:05??ConsoleApplication1\ConsoleApplication1\Debug\li
?????文件???????????2??2015-10-27?17:05??ConsoleApplication1\ConsoleApplication1\Debug\li
?????文件???????????2??2015-10-27?17:05??ConsoleApplication1\ConsoleApplication1\Debug\li
?????文件????????2804??2015-10-27?17:05??ConsoleApplication1\ConsoleApplication1\Debug\li
?????文件????????6414??2015-10-27?17:05??ConsoleApplication1\ConsoleApplication1\Debug\li
?????文件?????????480??2015-10-27?17:05??ConsoleApplication1\ConsoleApplication1\Debug\li
?????文件??????658432??2015-10-27?17:05??ConsoleApplication1\ConsoleApplication1\Debug\vc110.idb
?????文件?????1224704??2015-10-27?17:05??ConsoleApplication1\ConsoleApplication1\Debug\vc110.pdb
?????文件??????432700??2006-09-05?00:10??ConsoleApplication1\ConsoleApplication1\video.avi
............此處省略4個文件信息
評論
共有 條評論