资源简介
统计车流量,对于研究这方面的具有很好的指导作用
代码片段和文件信息
#include
#include
#include
#include
#include
#include
//#define N 500
#define E 3.3554//本文用基于T分布的变化监测
int main()
{ int ijkdif[3][9]n=1mc[8][2]={{01}{-11}{-10}{-1-1}{0-1}{1-1}{10}{11}}e[8]={10101010};
char *a1*a2*a3**b1**b2**b3;
float s[3]f[3]t[3]sum[240][960];
IplImage*fram*pimg1*pimg2*pimg3;
//读视频
printf(“稍微等一会儿\n“);
CvCapture *capture;
capture=cvCreateFileCapture(“highwayII_raw.AVI“);//为了方便将测试视频重命名为test.avi
fram=cvQueryframe(capture);
cvSaveImage(“test1.bmp“fram);
pimg1=cvLoadImage(“test1.bmp“1);
//创建一个同规格的图像用来存储背景图像
CvSize size=cvSize(pimg1->widthpimg1->height);
pimg3=cvCreateImage(sizepimg1->depth3);
a3=pimg3->imageData;
b3=new char*[pimg3->height];
for(i=0;iheight;i++)
b3[i]=&a3[i*pimg3->widthStep];
int **count;
count=new int*[240];
for(i=0;i<240;i++)
count[i]=new int[320];
//初始化
//printf(“1“);
for(i=0;i<240;i++)
for(j=0;j<320;j++)
count[i][j]=0;
//printf(“1\n“);
for(i=0;i<240;i++)
for(j=0;j<960;j++)
sum[i][j]=0;
//printf(“1\n“);
while(n<200)//取前100帧图像用于重建背景
{//一维数组变二维
b1=new char*[pimg1->height];
a1=pimg1->imageData;
for(i=0;iheight;i++)
b1[i]=&a1[i*pimg1->widthStep];
fram=cvQueryframe(capture);
if(!fram)
break;
cvSaveImage(“test2.bmp“fram);
pimg2=cvLoadImage(“test2.bmp“1);
b2=new char*[pimg2->height];
a2=pimg2->imageData;
for(i=0;iheight;i++)
b2[i]=&a2[i*pimg2->widthStep];
for(i=0;i<3;i++)
{
s[i]=0;
f[i]=0;
}
//printf(“正常1\n“);
for(i=1;iheight-1;i++)
{
for(j=1;jwidth-1;j++)
{ for(k=0;k<8;k++)
{ //选取领域的窗口为3*3对每一个像素点进行T分布变换监测
dif[0][k]=unsigned char(b2[i+c[k][0]][3*(j+c[k][1])])-unsigned char(b1[i+c[k][0]][3*(j+c[k][1])]);
dif[1][k]=unsigned char(b2[i+c[k][0]][3*(j+c[k][1])+1])-unsigned char(b1[i+c[k][0]][3*(j+c[k][1])+1]);
dif[2][k]=unsigned char(b2[i+c[k][0]][3*(j+c[k][1])+2])-unsigned char(b1[i+c[k][0]][3*(j+c[k][1])+2]);
f[0]+=dif[0][k];
f[1]+=dif[1][k];
f[2]+=dif[2][k];
}
dif[0][8]=unsigned char(b2[i][3*j])-unsigned char(b1[i][3*j]);
dif[1][8]=unsigned char(b2[i][3*j+1])-unsigned char(b1[i][3*j+1]);
dif[2][8]=unsigned char(b2[i][3*j+2])-unsigned char(b1[i][3*j+2]);
f[0]+=dif[0][8];
f[1]+=dif[1][8];
f[2]+=dif[2][8];
f[0]/=9;
f[1]/=9;
f[2]/=9;
for(k=0;k<9;k++)
{
s[0]+=(dif[0][k]-f[0])*(dif[0][k]-f[0]);
s[1]+=(dif[1][k]-f[1])*(dif[1][k]-f[1]);
s[2]+=(dif[2][k]-f[2])*(dif[2][k]-f[2]);
}
s[0]/=8;
s[1]/=8;
s[2]/=8;
s[0]=sqrt(s[0]);s[1]=sqrt(s[1]);s[2]=sqrt(s[2]);
//计算t
t[0]=(3*f[0]/s[0]);
t[1]=(3*f[1]/s[1]);
t[2]=(3*f[2]/s[2]);
if(fabs(t[0]) {
sum[i][3*j]+=(unsigned char)b2[i][3*j];
sum[i][3*j+1]+=(unsigned char)b2[i][3*j+
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 766 2011-03-08 15:30 用OpenCV实现的利用监控摄像头对高速路口车流量计数的程序\使用说明请参看右侧注释===〉〉.txt
文件 766 2011-03-08 15:30 用OpenCV实现的利用监控摄像头对高速路口车流量计数的程序\车流量计数\使用说明请参看右侧注释===〉〉.txt
文件 3726 2011-03-07 20:39 用OpenCV实现的利用监控摄像头对高速路口车流量计数的程序\车流量计数\大津法.CPP
文件 192594 2011-03-07 20:39 用OpenCV实现的利用监控摄像头对高速路口车流量计数的程序\车流量计数\大津法.exe
文件 4058 2011-03-07 20:44 用OpenCV实现的利用监控摄像头对高速路口车流量计数的程序\车流量计数\背景重建.cpp
文件 208982 2011-03-07 20:47 用OpenCV实现的利用监控摄像头对高速路口车流量计数的程序\车流量计数\背景重建.exe
文件 4578 2011-03-07 20:43 用OpenCV实现的利用监控摄像头对高速路口车流量计数的程序\车流量计数\车辆计数.cpp
文件 958976 2011-03-07 21:02 用OpenCV实现的利用监控摄像头对高速路口车流量计数的程序\车流量计数\车辆计数.doc
文件 192598 2011-03-07 20:46 用OpenCV实现的利用监控摄像头对高速路口车流量计数的程序\车流量计数\车辆计数.exe
目录 0 2013-05-01 13:31 用OpenCV实现的利用监控摄像头对高速路口车流量计数的程序\车流量计数
目录 0 2013-05-01 13:31 用OpenCV实现的利用监控摄像头对高速路口车流量计数的程序
----------- --------- ---------- ----- ----
1567044 11
- 上一篇:上海市地图-shp格式-乡镇级别
- 下一篇:移动机器人路径规划
评论
共有 条评论