• 大小: 8KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2022-08-14
  • 语言: 其他
  • 标签: 车速监测  

资源简介

基于OpenCV的视频车速识别,加载视频即可测速,OpenCV,VisualStudio。

资源截图

代码片段和文件信息

#include“caliberate.h“
IplImage* avgImage; //Road Image
uchar* avgImageData; //data of road image
float table[WIDTH_SMALL][HEIGHT_SMALL][NCHANNELS];
bool isFixed[WIDTH_SMALL][HEIGHT_SMALL];
IplImage * polygonImg;
int polyPts[4][2]; //four points of polygon
CvPoint pts[4]; //four points of polygon
int counter=0 ;
double polyArea = 0;
bool firstTime = true;
void my_mouse_callback(int event int x int y int flags void* param )
{
if(counter==4) counter=0;
switch( event ) 
{
case CV_EVENT_LBUTTONDOWN: 
{
polyPts[counter][0] = x ; polyPts[counter][1] = y;
cout< if(!firstTime)
{
int prevCounter = (counter==0?3:counter-1);
cvLine(avgImage cvPoint(polyPts[prevCounter][0] polyPts[prevCounter][1]) cvPoint(polyPts[counter][0] polyPts[counter][1]) CV_RGB(25500)1CV_AA);
cvShowImage(“photo_road“ avgImage);
}
firstTime = false;
}
break;
case CV_EVENT_LBUTTONUP: 
{
++counter;
}
break; 
}
}
void calibPolygon(void)
{
//while caliberating polygon click on four points to select polygon.
//If any pixel is chosen wrong keep clicking circularly clockwise to update polygon points
polygonImg  = cvCreateImage(cvSize(WIDTH_SMALLHEIGHT_SMALL)IPL_DEPTH_8U1); cvZero(polygonImg); //blackout area out of polygon
cvShowImage(“photo_road“ avgImage);
cvSetMouseCallback(“photo_road“my_mouse_callback(void*) 0);
cvWaitKey(0);

pts[0] = cvPoint( polyPts[0][0] polyPts[0][1] );
pts[1] = cvPoint( polyPts[1][0] polyPts[1][1]);
pts[2] = cvPoint( polyPts[2][0] polyPts[2][1]  );
pts[3] = cvPoint( polyPts[3][0] polyPts[3][1]);
cvFillConvexPoly( polygonImg pts 4 cvScalar( 255 255 255 ) 4);
float sabcde;
a = (double)pow((double)(pts[0].x-pts[1].x)*(pts[0].x-pts[1].x)+(pts[0].y-pts[1].y)*(pts[0].y-pts[1].y).5);
b = (double)pow((double)(pts[1].x-pts[2].x)*(pts[1].x-pts[2].x)+(pts[1].y-pts[2].y)*(pts[1].y-pts[2].y).5);
c = (double)pow((double)(pts[0].x-pts[2].x)*(pts[0].x-pts[2].x)+(pts[0].y-pts[2].y)*(pts[0].y-pts[2].y).5);
d = (double)pow((double)(pts[2].x-pts[3].x)*(pts[2].x-pts[3].x)+(pts[2].y-pts[3].y)*(pts[2].y-pts[3].y).5);
e = (double)pow((double)(pts[3].x-pts[0].x)*(pts[3].x-pts[0].x)+(pts[3].y-pts[0].y)*(pts[3].y-pts[0].y).5);
s = (a+b+c)/2;
polyArea+= fabs(sqrt(s*(s-a)*(s-b)*(s-c)));
s = (c+d+e)/2;
polyArea+= fabs((double)pow((double)s*(s-c)*(s-d)*(s-e).5));
cvDestroyWindow(“photo_road“);
}

void calibIntensity(void)
{
//Find average Image Intensity (just for information)
float intensity = 0;
int temp;
for(int i=0; i {
for(int j=0; j {
temp = i*WIDTH_STEP_SMALL+j*NCHANNELS;
intensity += ( frameData[temp] + frameData[temp+1] + frameData[temp+2] )/3;
}
}
intensity/= WIDTH_SMALL * HEIGHT_SMALL;
cout<<“Intensity = “<}

IplImage* findRoadImage(void)
{
avgImage = cvCreateImage( cvSize(WIDTH_SMALL HEIGHT_SMALL) 8 3); //averaged over 100 gray image fr

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        1661  2014-10-18 20:41  Realtime-Traffic-Detection-master\README.md
     文件        5510  2014-10-18 20:41  Realtime-Traffic-Detection-master\caliberate.cpp
     文件         936  2014-10-18 20:41  Realtime-Traffic-Detection-master\caliberate.h
     文件       10238  2018-04-12 16:39  Realtime-Traffic-Detection-master\main.cpp
     目录           0  2014-10-18 20:41  Realtime-Traffic-Detection-master\

评论

共有 条评论

相关资源