资源简介
基于Opencv的摄像头实时监控与报警系统设计,内附源代码,运行程序直接打开摄像头。
代码片段和文件信息
#include “cv.h“
#include “highgui.h“
#include
#include
#include
#include
#include
#include
#include
//跟踪参数
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 = 100;//矩形面积
IplImage **buf = 0;
int last = 0;
int flag;
IplImage *mhi = 0; // MHI: motion history image
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.; //获取当前时间
CvSize size = cvSize(img->width img->height);
int i idx1 idx2;
IplImage* silh;
IplImage* pyr = cvCreateImage(cvSize((size.width & -2) / 2 (size.height & -2) / 2) 8 1);
CvMemStorage *stor;
CvSeq *cont;
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);
}
cvCvtColor(img buf[last] CV_BGR2GRAY); //rgb->gray
idx1 = last;
idx2 = (last + 1) % N;
last = idx2;
// 做帧差
silh = buf[idx2];
cvAbsDiff(buf[idx1] buf[idx2] silh); //两帧差异
// 对差图像做二值化
cvThreshold(silh silh 30 255 CV_THRESH_BINARY); //src(xy)>threshold dst(xy) = max_value; 否则dst(xy)=0;
cvUpdateMotionHistory(silh mhi timestamp MHI_DURATION); //更新像素点的运动历史
cvCvtScale(mhi dst 255. / MHI_DURATION
(MHI_DURATION - timestamp)*255. / MHI_DURATION);//timestamp是时间戳;MHI_DURATION,获得的是当前时间
cvCvtScale(mhi dst 255. / MHI_DURATION 0);
// 中值滤波,消除小的噪声
cvSmooth(dst dst CV_MEDIAN 3 0 0 0);
// 向下采样,去掉噪声
cvPyrDown(dst pyr 7);
cvDilate(pyr pyr 0 1); // 做膨胀操作,消除目标的不连续空洞
cvPyrUp(pyr dst 7);
//
// 下面的程序段用来找到轮廓
//
// Create dynamic structure and sequence.
stor = cvCreateMemStorage(0);
cont = cvCreateSeq(CV_SEQ_ELTYPE_POINT sizeof(CvSeq) sizeof(CvPoint) stor);
// 找到所有轮廓
cvFindContours(dst stor &cont sizeof(CvContour)
CV_RETR_LIST CV_CHAIN_APPROX_SIMPLE cvPoint(0 0));
// 直接使用CONTOUR中的矩形来画轮廓
for (; cont; cont = cont->h_next)
{
flag = 0;
CvRect r = ((CvContour*)cont)->rect;
if (r.height * r.width > CONTOUR_MAX_AERA)
{
cvRectangle(img cvPoint(r.x r.y)
cvPoint(r.x + r.width r.y + r.height)
CV_RGB(255 0 0) 1 CV_AA 0);
flag = 1;
}
else
{
flag = 0;
}
}
cvReleaseMemStorage(&stor);
cvReleaseImage(&pyr);
}
//报警函数
void warning(){
//PlaySound(“K:\\111.MP3“NULLSND_FILENAME || SND_ASYNC);
printf(“\a“);
flag = 0;
}
int main(int argc char** argv)
{
IplImage* mo
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2015-06-05 10:39 摄像头实时监控与报警系统(Opencv)\
目录 0 2015-06-05 10:39 摄像头实时监控与报警系统(Opencv)\Debug\
文件 66560 2015-03-25 09:25 摄像头实时监控与报警系统(Opencv)\Debug\ms.exe
文件 1067808 2015-03-25 09:25 摄像头实时监控与报警系统(Opencv)\Debug\ms.ilk
文件 2215936 2015-03-25 09:25 摄像头实时监控与报警系统(Opencv)\Debug\ms.pdb
目录 0 2015-06-05 10:39 摄像头实时监控与报警系统(Opencv)\ms\
目录 0 2015-06-05 10:39 摄像头实时监控与报警系统(Opencv)\ms\Debug\
文件 1512 2015-03-25 09:25 摄像头实时监控与报警系统(Opencv)\ms\Debug\ms.log
文件 212283 2015-03-25 09:24 摄像头实时监控与报警系统(Opencv)\ms\Debug\ms.obj
目录 0 2015-06-05 10:39 摄像头实时监控与报警系统(Opencv)\ms\Debug\ms.tlog\
文件 34532 2015-03-25 09:24 摄像头实时监控与报警系统(Opencv)\ms\Debug\ms.tlog\CL.read.1.tlog
文件 260 2015-03-25 09:24 摄像头实时监控与报警系统(Opencv)\ms\Debug\ms.tlog\CL.write.1.tlog
文件 536 2015-03-25 09:24 摄像头实时监控与报警系统(Opencv)\ms\Debug\ms.tlog\cl.command.1.tlog
文件 1494 2015-03-25 09:25 摄像头实时监控与报警系统(Opencv)\ms\Debug\ms.tlog\li
文件 3616 2015-03-25 09:25 摄像头实时监控与报警系统(Opencv)\ms\Debug\ms.tlog\li
文件 242 2015-03-25 09:25 摄像头实时监控与报警系统(Opencv)\ms\Debug\ms.tlog\li
文件 152 2015-03-25 09:25 摄像头实时监控与报警系统(Opencv)\ms\Debug\ms.tlog\ms.lastbuildstate
文件 1100800 2015-03-25 09:24 摄像头实时监控与报警系统(Opencv)\ms\Debug\vc120.idb
文件 1339392 2015-03-25 09:24 摄像头实时监控与报警系统(Opencv)\ms\Debug\vc120.pdb
文件 4733 2015-03-25 09:11 摄像头实时监控与报警系统(Opencv)\ms\ms.cpp
文件 5212 2015-03-20 14:08 摄像头实时监控与报警系统(Opencv)\ms\ms.vcxproj
文件 943 2015-03-20 14:08 摄像头实时监控与报警系统(Opencv)\ms\ms.vcxproj.filters
文件 42270720 2015-03-25 15:03 摄像头实时监控与报警系统(Opencv)\ms.sdf
文件 952 2015-03-19 21:57 摄像头实时监控与报警系统(Opencv)\ms.sln
文件 20480 2015-04-22 15:04 摄像头实时监控与报警系统(Opencv)\ms.v12.suo
- 上一篇:r数据可视化手册
- 下一篇:黑苹果wifi驱动支持绝大部分类型
评论
共有 条评论