资源简介
基于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\
评论
共有 条评论