• 大小: 14KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-06-09
  • 语言: C/C++
  • 标签: opencv  车流  

资源简介

opencv 获取道路上车流量,实现上下行

资源截图

代码片段和文件信息


#include 
#include 
#include 
#include 
#include 
#include 
#include “opencv2/objdetect/objdetect.hpp“
#include “opencv2/highgui/highgui.hpp“
#include “opencv2/imgproc/imgproc.hpp“
#include“tacker.h“
#define MODE  1  //1-video 2-camera
using namespace std;
using namespace cv;
FILE *fp;
CvCapture* pCapture = NULL;

int  g_slider_position = 0;
bool tracking=false;
bool MouseDown=false;
//CvPoint pt1pt2;

int numcounte = -60;

CvPoint pt1pt2;
CvPoint pt_1pt_2;//围入的点
void Start() ;

//void TrackBar(int pos)
//{
// cvSetCaptureProperty(pCaptureCV_CAP_PROP_POS_frameSpos); //设置要读取的帧
//}
void on_mouse(int event int xint yint flagsvoid* param) ;
double TimeBegin;
double TimeEnd;
double VSpeed;
int main()
{
Start();
return 0;
}
void Start() 
{

int key;
//IplImage*tempOut=NULL;
IplImage* XSobe = NULL;
IplImage* YSobe = NULL;
IplImage* Laplace = NULL;

IplImage* pframe = NULL;
IplImage* pFrImg = NULL;
IplImage* pBkImg = NULL;

CvMat* pframeMat = NULL;
CvMat* pFrMat = NULL;
CvMat* pBkMat = NULL;

CvMemStorage * storage = cvCreateMemStorage(0);//轮廓边缘提取时的参数
CvSeq * contour = 0;//轮廓边缘提取时的参数
int mode = CV_RETR_EXTERNAL;//轮廓边缘提取时的参数
int linetype=CV_AA;
//形态学处纴E
IplConvKernel* Element = cvCreateStructuringElementEx(31311/*CV_SHAPE_CROSS*/CV_SHAPE_RECT/*CV_SHAPE_ELLIPSE*/NULL);
CvFont font1;//初始化字体格式
cvInitFont(&font1 CV_FONT_HERSHEY_SIMPLEX 1 0.5 0 28);

int No=0;//用于记录显示车辆
int NoBig=0;
int NoSmall=0;

int No_1=0;//用于记录显示车辆
int NoBig_1=0;
int NoSmall_1=0;

bool FindCar=false;
bool FindCarS=false;
bool FindCarB=false;

bool FindCar_1=false;
bool FindCarS_1=false;
bool FindCarB_1=false;

int sum=0;
int sumBig=0;
int sumSmall=0;

int sum_1=0;
int sumBig_1=0;
int sumSmall_1=0;

//用来计算车流量
int TOTAL=0;
int TOTALs=0;
int TOTALb=0;
int TOTAL_1=0;
int TOTALs_1=0;
int TOTALb_1=0;

//车速
char recSSUM[100]={0};

CvPoint pt3pt4pt5;
CvPoint pt_3pt_4pt_5;
pt1.x=60;//视频中左上
pt1.y=60;
pt2.x=300;//视频中右下
pt2.y=160;

pt_1.x=160;//视频中左上
pt_1.y=180;
pt_2.x=330;//视频中右下
pt_2.y=220;
CvRect bndRect=cvRect(0000);//用cvBoundingRect画出外接矩形时需要的矩形
int avgX = 0;
int avgY = 0;
 

for(int i=0;i<10;i++)
{
TrackBlock[i]=NULL;
if((TrackBlock[i]=(struct AvTrackBlock *) malloc(sizeof(struct AvTrackBlock)))==NULL)
{
exit(1);
}

TrackBlockBig[i]=NULL;
if((TrackBlockBig[i]=(struct AvTrackBlock *) malloc(sizeof(struct AvTrackBlock)))==NULL)
{
exit(1);
}

TrackBlockSmall[i]=NULL;
if((TrackBlockSmall[i]=(struct AvTrackBlock *) malloc(sizeof(struct AvTrackBlock)))==NULL)
{
exit(1);
}
}//////////////////

int nFrmNum =0;
//int frames = (int) cvGetCaptureProperty(pCaptureCV_CAP_PROP_frame_COUNT); //获取视频的总帧数

int frame=0;
int frameS=0;
int frameB=0;
//cvNamedWindow(“video“1);
//cvN

评论

共有 条评论