• 大小: 9.58MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-10-31
  • 语言: 其他
  • 标签: opencv  

资源简介

实现了静态背景下多目标的跟踪,并进行了可视化的跟踪效果,用矩形框框起了运动目标,并赋予了ID编号,还实现了另一种多目标跟踪算法

资源截图

代码片段和文件信息

// Capture.cpp : 定义控制台应用程序的入口点。
//
#include “stdafx.h“
#include 
#include 
//#include 
#include 
#include 
#include 
#include “string.h“

#define OTSU_THRESHOLD_MIN 15
#define OTSU_THRESHOLD_RET -15

/*****************动态生成二值化阈值******************/
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个点
int gmax = 255 gmin = 0;//最亮与最暗像素值
int i imgsize;   //循环变量与图像尺寸
int n n1 n2;    //n:非零像素个数,n1:前景像素个数 n2:背景像素个数
double m1 m2 sum csum fmax sb; //m1:前景灰度均值 m2:背景灰度均值。

//对直方图置零
memset(ihist 0 sizeof(ihist));

//生成直方图
imgsize = (gray->widthStep)*(gray->height);  //图像数据总数
for (i = 0; i < imgsize; i ++)
{
ihist[((int)(*ImgData)) & 255] ++;  //灰度统计
ImgData ++;  //下一个像素

if((int)(*ImgData) > gmax) 
gmax = (int)(*ImgData);
if((int)(*ImgData) < gmin)
gmin = (int)(*ImgData);
}

//设置参数
sum = csum = 0.0;
n = 0;

for (i = 0; i <= 255; i ++){
sum += (double)i * (double)ihist[i];//x*f(x)质量矩
n += ihist[i];   //f(x)质量,n:总灰度值
}

//加入光照调节参数
deltaT = (int)( sum / imgsize );//背景像素个数,deltaT:光照调节参数

deltaT = deltaT>>1;//pal值校正△T

if (!n){
//如果图像全黑,输出警告与结果
printf (“NOT NORMAL thresholdValue=160\n“);
return (160);
}

// OTSU算法:
fmax = -1.0;
n1 = 0;

for (i = 0; i < 255; i++)
{
n1 += ihist[i];  //前景像素个数
if (!n1) {continue;}

n2 = n - n1;     //背景像素个数
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);  //类间方差

/*这里是原理形式,可以被优化*/
if ( sb > fmax )
{
fmax = sb;
thresholdValue = i;//得到使类间方差最大的阈值T
}

}

if(!grayflag)
cvReleaseImage(&gray);
if(thresholdValue < OTSU_THRESHOLD_MIN)
return OTSU_THRESHOLD_MIN;
return(thresholdValue - deltaT + OTSU_THRESHOLD_RET );//根据情况修改修正变量

}

/**************************基于运动模板的跟踪算法****************************/
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返回毫秒值,这里转换为秒为单位
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

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      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.embed.manifest

     文件        468  2017-11-23 16:33  Video处理\Capture\Debug\Capture.exe.embed.manifest.res

     文件        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\link.command.1.tlog

     文件          2  2017-11-23 16:35  Video处理\Capture\Debug\link.read.1.tlog

     文件          2  2017-11-23 16:35  Video处理\Capture\Debug\link.write.1.tlog

     文件         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个文件信息

评论

共有 条评论