資源簡(jiǎn)介
實(shí)現(xiàn)了靜態(tài)背景下多目標(biāo)的跟蹤,并進(jìn)行了可視化的跟蹤效果,用矩形框框起了運(yùn)動(dòng)目標(biāo),并賦予了ID編號(hào),還實(shí)現(xiàn)了另一種多目標(biāo)跟蹤算法

代碼片段和文件信息
//?Capture.cpp?:?定義控制臺(tái)應(yīng)用程序的入口點(diǎn)。
//
#include?“stdafx.h“
#include?
#include?
//#include?
#include?
#include?
#include?
#include?“string.h“
#define?OTSU_THRESHOLD_MIN?15
#define?OTSU_THRESHOLD_RET?-15
/*****************動(dòng)態(tài)生成二值化閾值******************/
int?cvOSTU(IplImage?*src)
{
int?deltaT?=?0;
uchar?grayflag?=?1;
IplImage?*gray?=?NULL;
if(src->nChannels?!=?1)//注意這里將源圖像變灰
{
gray?=?cvCreateImage(cvGetSize(src)?8?1);
cvCvtColor(src?gray?CV_BGR2GRAY);
grayflag?=?0;
}
else?gray?=?src;
uchar*?ImgData?=?(uchar*)(gray->imageData);
int?thresholdValue?=?1;??//閾值
int?ihist[256];???//圖像直方圖,256個(gè)點(diǎn)
int?gmax?=?255?gmin?=?0;//最亮與最暗像素值
int?i?imgsize;???//循環(huán)變量與圖像尺寸
int?n?n1?n2;????//n:非零像素個(gè)數(shù),n1:前景像素個(gè)數(shù)?n2:背景像素個(gè)數(shù)
double?m1?m2?sum?csum?fmax?sb;?//m1:前景灰度均值?m2:背景灰度均值。
//對(duì)直方圖置零
memset(ihist?0?sizeof(ihist));
//生成直方圖
imgsize?=?(gray->widthStep)*(gray->height);??//圖像數(shù)據(jù)總數(shù)
for?(i?=?0;?i? {
ihist[((int)(*ImgData))?&?255]?++;??//灰度統(tǒng)計(jì)
ImgData?++;??//下一個(gè)像素
if((int)(*ImgData)?>?gmax)?
gmax?=?(int)(*ImgData);
if((int)(*ImgData)? gmin?=?(int)(*ImgData);
}
//設(shè)置參數(shù)
sum?=?csum?=?0.0;
n?=?0;
for?(i?=?0;?i?<=?255;?i?++){
sum?+=?(double)i?*?(double)ihist[i];//x*f(x)質(zhì)量矩
n?+=?ihist[i];???//f(x)質(zhì)量,n:總灰度值
}
//加入光照調(diào)節(jié)參數(shù)
deltaT?=?(int)(?sum?/?imgsize?);//背景像素個(gè)數(shù),deltaT:光照調(diào)節(jié)參數(shù)
deltaT?=?deltaT>>1;//pal值校正△T
if?(!n){
//如果圖像全黑,輸出警告與結(jié)果
printf?(“NOT?NORMAL?thresholdValue=160\n“);
return?(160);
}
//?OTSU算法:
fmax?=?-1.0;
n1?=?0;
for?(i?=?0;?i?255;?i++)
{
n1?+=?ihist[i];??//前景像素個(gè)數(shù)
if?(!n1) {continue;}
n2?=?n?-?n1;?????//背景像素個(gè)數(shù)
if?(n2?==?0) {break;}
csum?+=?(double)i?*?ihist[i];??//前景總灰度
m1?=?csum?/?n1;????????//前景灰度均值
m2?=?(sum?-?csum)/n2;??//背景灰度均值
sb?=?(double)n1?*?(double)n2?*?(m1?-?m2)?*?(m1?-?m2);??//類間方差
/*這里是原理形式,可以被優(yōu)化*/
if?(?sb?>?fmax?)
{
fmax?=?sb;
thresholdValue?=?i;//得到使類間方差最大的閾值T
}
}
if(!grayflag)
cvReleaseImage(&gray);
if(thresholdValue? return?OTSU_THRESHOLD_MIN;
return(thresholdValue?-?deltaT?+?OTSU_THRESHOLD_RET?);//根據(jù)情況修改修正變量
}
/**************************基于運(yùn)動(dòng)模板的跟蹤算法****************************/
void??cvUpdateMHI(?IplImage*?img?IplImage*?dst)
{
float?MHI_DURATION?=?0.5;
const?double?MAX_TIME_DELTA?=?0.25;
const?double?MIN_TIME_DELTA?=?0.05;
char?ID_T[50]?=?{0};
double?timestamp?=?clock()/1000.;?//?clock返回毫秒值,這里轉(zhuǎn)換為秒為單位
CvSize?size=cvSize(?img->width?img->height?);?//?get?current?frame?size
int?i;
IplImage*?silh?=?NULL;
IplImage*?mhi?=?NULL;
IplImage*?orient?=?NULL;
IplImage*?segmask?=?NULL;
IplImage*?mask?=?NULL;
CvSeq*?seq;
CvRect?comp_rect;
double?count;
double?angle;
CvPoint?center;
double?magnitude;
CvScalar?color;
CvFont?font;
CvMemStorage*?storage?=?0;
//?allocate?images?at?the?beg
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件??????13690??2017-11-23?16:35??Video處理\Capture\Capture.cpp
?????文件???????4777??2011-02-23?16:13??Video處理\Capture\Capture.vcproj
?????文件???????1427??2011-06-09?23:27??Video處理\Capture\Capture.vcproj.PC-20100809AYSR.Administrator.user
?????文件???????1417??2012-08-07?16:21??Video處理\Capture\Capture.vcproj.xiao-THINK.xiao.user
?????文件???????6024??2017-11-23?16:33??Video處理\Capture\Capture.vcxproj
?????文件???????1295??2017-11-23?16:25??Video處理\Capture\Capture.vcxproj.filters
?????文件????????143??2017-11-23?16:25??Video處理\Capture\Capture.vcxproj.user
?????文件???????4476??2011-07-10?18:59??Video處理\Capture\Debug\BuildLog.htm
?????文件????????403??2011-02-28?20:29??Video處理\Capture\Debug\Capture.exe.em
?????文件????????468??2017-11-23?16:33??Video處理\Capture\Debug\Capture.exe.em
?????文件????????385??2011-06-07?16:51??Video處理\Capture\Debug\Capture.exe.intermediate.manifest
?????文件?????????66??2017-11-23?16:35??Video處理\Capture\Debug\Capture.lastbuildstate
?????文件???????2440??2017-11-23?16:35??Video處理\Capture\Debug\Capture.log
?????文件?????156262??2017-11-23?16:35??Video處理\Capture\Debug\Capture.obj
?????文件????1179648??2017-11-23?16:33??Video處理\Capture\Debug\Capture.pch
?????文件??????????0??2017-11-23?16:35??Video處理\Capture\Debug\Capture.unsuccessfulbuild
?????文件????????707??2017-11-23?16:33??Video處理\Capture\Debug\Capture.vcxprojResolveAssemblyReference.cache
?????文件??????????0??2017-11-23?16:33??Video處理\Capture\Debug\Capture.write.1.tlog
?????文件????????204??2017-11-23?16:33??Video處理\Capture\Debug\Capture_manifest.rc
?????文件???????1514??2017-11-23?16:35??Video處理\Capture\Debug\cl.command.1.tlog
?????文件??????15058??2017-11-23?16:35??Video處理\Capture\Debug\CL.read.1.tlog
?????文件????????894??2017-11-23?16:35??Video處理\Capture\Debug\CL.write.1.tlog
?????文件??????????2??2017-11-23?16:35??Video處理\Capture\Debug\li
?????文件??????????2??2017-11-23?16:35??Video處理\Capture\Debug\li
?????文件??????????2??2017-11-23?16:35??Video處理\Capture\Debug\li
?????文件?????????67??2011-06-07?16:51??Video處理\Capture\Debug\mt.dep
?????文件????????552??2017-11-23?16:33??Video處理\Capture\Debug\rc.command.1.tlog
?????文件????????314??2017-11-23?16:33??Video處理\Capture\Debug\rc.read.1.tlog
?????文件????????322??2017-11-23?16:33??Video處理\Capture\Debug\rc.write.1.tlog
?????文件??????11455??2017-11-23?16:33??Video處理\Capture\Debug\stdafx.obj
............此處省略29個(gè)文件信息
- 上一篇:調(diào)節(jié)閥計(jì)算小軟件
- 下一篇:北航編譯大作業(yè)
評(píng)論
共有 條評(píng)論