资源简介
识别视频中的车辆,并画一条界限,超过界限的车画红框,未超过的车画绿框。分成三个车道,分别对超过界限的车辆分别计数。
代码片段和文件信息
#include “cv.h“
#include “highgui.h“
#include
#include
#include
#include
#include
const double MHI_DURATION = 0.5;
const int N = 3;
const int CONTOUR_MAX_AERA = 800;//最小区域
int last = 0;
int nFrmNum = 0;
bool FindCar=false;
int No[5]={00000};
int sum[4]={0000};
IplImage **buf = 0;// ring image buffer
IplImage *mhi = 0; // MHI: motion history image
struct AvTrackBlock{
int Direction; //1表示进入区域,0表示离开区域
int framesTracked; //已经跟踪到车辆的帧数。
int avgX; //车辆x方向中心
int avgY; //车辆y方向中心
} TrackBlock[4][5];
void DrawText(IplImage* pImgchar* textCvPoint Point);
void DrawCount(IplImage* pImgint countCvPoint Point);
void AddBlobTrack(IplImage* imgint iCvPoint pt_Rect);
void update_mhi( IplImage* img IplImage* dst int diff_threshold );
int main()
{
IplImage* motion = NULL;
IplImage* image;
CvCapture* capture = NULL;
capture = cvCaptureFromFile(“F:\\01.avi“);//打开文件
if( !cvGrabframe( capture ))
printf( “Can not open video file %s\n“);
cvNamedWindow( “Motion“ 1 ); //窗口命名
cvNamedWindow( “temp“ 2 ); //窗口命名
cvNamedWindow( “temp2“ 3 ); //窗口命名
cvNamedWindow( “temp3“ 4 ); //窗口命名
// cvNamedWindow( “temp4“ 4 ); //窗口命名
cvMoveWindow(“Motion“ 0 100 );
cvMoveWindow(“temp“ 300 100 );
cvMoveWindow(“temp2“ 650 100 );
cvMoveWindow(“temp3“ 950 100 );
// cvMoveWindow(“temp4“ 1200 100 );
for(int i=0;i<4;i++) //初始化跟踪结构体
for(int j=0;j<5;j++)
{
TrackBlock[i][j].Direction=0;
TrackBlock[i][j].framesTracked=0;
TrackBlock[i][j].avgX=0;
TrackBlock[i][j].avgY=0;
}
if( capture )
{
while(image = cvQueryframe(capture))//获取视频
{
nFrmNum++;
image = cvRetrieveframe(capture0 );
if(nFrmNum == 1)
{
motion = cvCreateImage( cvSize(image->widthimage->height) 8 1 );//创建图像
cvZero( motion ); //置0
motion->origin = image->origin; //对其原点
}
update_mhi( image motion 60 ); //更新
cvShowImage( “Motion“ image ); //显示图像
if( cvWaitKey(10) >= 0 ) //如果等待错过10 则跳出循环
break;
}
cvReleaseCapture( &capture ); //释放捕获
cvDestroyWindow( “Motion“ ); //销毁窗口
}
return 0;
}
// 参数:
// img – 输入视频帧
// dst – 检测结果
void update_mhi( IplImage* img IplImage* dst int diff_threshold )
{
double timestamp = clock()/100.; // get current time in seconds
int i j idx1 idx2;
uchar val;
float temp;
int avgX1 = 0;
int avgY1 = 0;
CvSize size = cvSize(img->widthimg->height); // get current frame size
IplImage* silh;
/*********************************/IplImage* pyr = cvCreateImage( cvSize((size.width & -2)/2 (size.height & -2)/2) 8 1 );
/*-2补码 11111111 11111111 11111111 11111110 那么size.width & -2就是把最后一位width的最后一位置0,
下面分析为什么要把最后一位置为0
如果源图像的width为奇数,则通过和-2相与,最后一位设为0,相当于图像width减小了1,然后再除以2,刚好为源图像分配了一半的width*/
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2016-01-08 08:03 opencv car2 车辆计数\
目录 0 2016-01-10 19:40 opencv car2 车辆计数\opencv car2\
目录 0 2016-01-08 08:03 opencv car2 车辆计数\opencv car2\ipch\
目录 0 2016-01-08 08:03 opencv car2 车辆计数\opencv car2\ipch\opencv car2-29fcdb31\
文件 57475072 2015-05-29 10:22 opencv car2 车辆计数\opencv car2\ipch\opencv car2-29fcdb31\opencv car2-8b8a31d.ipch
目录 0 2016-01-10 19:39 opencv car2 车辆计数\opencv car2\opencv car2\
文件 7208960 2016-01-10 19:40 opencv car2 车辆计数\opencv car2\opencv car2.sdf
文件 1254 2015-04-20 23:49 opencv car2 车辆计数\opencv car2\opencv car2.sln
文件 23552 2015-05-29 10:38 opencv car2 车辆计数\opencv car2\opencv car2.suo
文件 45568 2016-01-10 19:40 opencv car2 车辆计数\opencv car2\opencv car2.v11.suo
文件 4343534 2015-04-13 16:15 opencv car2 车辆计数\opencv car2\opencv car2\01.avi
文件 10555 2015-05-29 10:36 opencv car2 车辆计数\opencv car2\opencv car2\motiondetect2 fenzhen.cpp
文件 10969 2015-05-13 11:25 opencv car2 车辆计数\opencv car2\opencv car2\motiondetect2 jishu hanshu.cpp
文件 9288 2015-05-12 22:13 opencv car2 车辆计数\opencv car2\opencv car2\motiondetect2.cpp
文件 4891 2015-04-23 11:22 opencv car2 车辆计数\opencv car2\opencv car2\opencv cvCalcOpticalFlowHS.cpp
文件 32646 2015-04-20 23:50 opencv car2 车辆计数\opencv car2\opencv car2\opencv car2.cpp
文件 7156 2016-01-10 19:36 opencv car2 车辆计数\opencv car2\opencv car2\opencv car2.vcxproj
文件 959 2015-05-13 11:38 opencv car2 车辆计数\opencv car2\opencv car2\opencv car2.vcxproj.filters
文件 143 2015-04-20 17:57 opencv car2 车辆计数\opencv car2\opencv car2\opencv car2.vcxproj.user
文件 14198 2008-07-12 15:25 opencv car2 车辆计数\opencv car2\opencv car2\OpenVideo.cpp
目录 0 2016-01-08 08:04 opencv car2 车辆计数\opencv car2\opencv car2\sechost.pdb\
目录 0 2016-01-08 08:04 opencv car2 车辆计数\opencv car2\opencv car2\sechost.pdb\A88565B0437A42C5A7D3F0FC056501221\
文件 0 2015-05-14 20:39 opencv car2 车辆计数\opencv car2\opencv car2\sechost.pdb\A88565B0437A42C5A7D3F0FC056501221\sechost.pd_
文件 3061 2015-05-12 19:50 opencv car2 车辆计数\opencv car2\opencv car2\test.cpp
文件 2438 2011-10-06 16:08 opencv car2 车辆计数\opencv car2\opencv car2\TrackandIDDlg.h
目录 0 2016-01-08 08:04 opencv car2 车辆计数\opencv car2\opencv car2\x64\
目录 0 2016-01-10 19:36 opencv car2 车辆计数\opencv car2\opencv car2\x64\Debug\
文件 1398 2016-01-10 19:36 opencv car2 车辆计数\opencv car2\opencv car2\x64\Debug\cl.command.1.tlog
文件 21566 2016-01-10 19:36 opencv car2 车辆计数\opencv car2\opencv car2\x64\Debug\CL.read.1.tlog
文件 784 2016-01-10 19:36 opencv car2 车辆计数\opencv car2\opencv car2\x64\Debug\CL.write.1.tlog
文件 2 2015-05-29 10:36 opencv car2 车辆计数\opencv car2\opencv car2\x64\Debug\li
............此处省略58个文件信息
- 上一篇:飞秋(FeiQ)
- 下一篇:M5311_LV&M5311;_CM用户手册.rar
相关资源
- 双目定位识别物体的距离
- OpenCV中文参考手册
- 人脸检测exe程序可直接运行
- MNIST数据集原始格式+csv格式
- Opencv中查找轮廓,并用直线拟合,检
- LD3320语音识别模块
- Mobilenet-SSD 车辆检测
- opencv需要的常用dllcv100、cv200.dll、ml
- opencv彩色三通道图片反色
- 车牌识别opencv
- face_recognition人脸识别
- OpenCV教程--基础篇
- USPS手写体数字识别图片库
- 人脸识别数据库大全(ORL FERET YALE)
- MPSK信号调制方式识别
- 人脸识别软件
- 人脸识别+opencv
- 最经典的机器学习教科书之一:《模
- 车牌识别系统的性能评测图像库
- win7 32位 vs2010 opencv3.00版本 opencv_worl
- opencv3.4.1的lib库
- 完美验证码识别系统V3.2.1.zip--验证码
- Qt_opencv.rar
- 图像轮廓拐点信息读取程序
- 车牌识别程序一整套上次那个资源传
- OpenCV2之Qt库
- 组合数学第四版答案
- 模式识别-中科院-黄庆明-视频教程视
- 手写体识别数据集
- 用opencv实现全景图拼接
评论
共有 条评论