资源简介
行人检测C++代码
代码片段和文件信息
#include “cv.h“
#include
#include “highgui.h“
#include
#include
#include
#include
#include
// various tracking parameters (in seconds)
const double MHI_DURATION = 0.5;
const double MAX_TIME_DELTA = 0.5;
const double MIN_TIME_DELTA = 0.05;
const int N = 3;
//
const int CONTOUR_MAX_AERA = 16;
// ring image buffer
IplImage **buf = 0;
int last = 0;
// temporary images
IplImage *mhi = 0;
// MHI: motion history image
int filter = CV_GAUSSIAN_5x5;
CvConnectedComp *cur_comp min_comp;
CvConnectedComp comp;
CvMemStorage *storage; CvPoint pt[4];
// 参数:
// img – 输入视频帧
// dst – 检测结果
void update_mhi( IplImage* img IplImage* dst int diff_threshold )
{
double timestamp = clock()/100.;
// get current time in seconds
CvSize size = cvSize(img->widthimg->height);
// get current frame size
int i j idx1 idx2;
IplImage* silh;
uchar val;
float temp;
IplImage* pyr = cvCreateImage( cvSize((size.width & -2)/2 (size.height & -2)/2) 8 1 );
CvMemStorage *stor;
CvSeq *cont *result *squares;
CvSeqReader reader;
if( !mhi || mhi->width != size.width || mhi->height != size.height )
{
if( buf == 0 )
{
buf = (IplImage**)malloc(N*sizeof(buf[0]));
memset( buf 0 N*sizeof(buf[0]));
}
for( i = 0; i < N; i++ )
{
cvReleaseImage( &buf[i] );
buf[i] = cvCreateImage( size IPL_DEPTH_8U 1 );
cvZero( buf[i] );
}
cvReleaseImage( &mhi );
mhi = cvCreateImage( size IPL_DEPTH_32F 1 );
cvZero( mhi );
// clear MHI at the beginning
}
// end of if(mhi)
cvCvtColor( img buf[last] CV_BGR2GRAY );
// convert frame to grayscale
idx1 = last;
idx2 = (last + 1) % N;
// index of (last - (N-1))th frame
last = idx2;
// 做帧差
silh = buf[idx2];
cvAbsDiff( buf[idx1] buf[idx2] silh );
// get difference between frames
// 对差图像做二值化
cvThreshold( silh silh 30 255 CV_THRESH_BINARY );
// and threshold it
cvUpdateMotionHistory( silh mhi timestamp MHI_DURATION );
// update MHI
cvCvtScale( mhi dst 255./MHI_DURATION
(MHI_DURATION - timestamp)*255./MHI_DURATION );
cvCvtScale
- 上一篇:贪心算法解多重背包代码
- 下一篇:C++编写的多叉树结构
相关资源
- C++获取计算机的CPU ID,硬盘序列号等
- C++头文件转delphi工具 + 源码
- C语言编程常见问题解答.pdf
- 基于MFC的TCP调试助手源码95706
- 国际象棋的qt源代码
- C++中头文件与源文件的作用详解
- 基于mfc的多线程文件传输
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- 利用C++哈希表的方法实现电话号码查
- 计算机二级C语言上机填空,改错,编
- 移木块游戏,可以自编自玩,vc6.0编写
- C++纯文字DOS超小RPG游戏
- 安科瑞智能电能表MODBUS通讯程序 VC6
- VC++MFC小游戏实例教程(实例)+MFC类库
- 连铸温度场计算程序(C++)
- C语言进阶——嵌入式系统高级C语言编
- 6自由度机器人运动学正反解C++程序
- Em算法(使用C++编写)
- libstdc++-4.4.7-4.el6.i686.rpm
- VC++实现CMD命令执行与获得返回信息
- 白话C++(全)
- C++标准库第1、2
- 大数类c++大数类
- C++语言编写串口调试助手
- c++素数筛选法
- C++ mqtt 用法
- 九齐单片机源码
- 商品库存管理系统 C++ MFC
- Qt画图工具源码(qgraphics draw)
评论
共有 条评论