• 大小: 13.45MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-06-20
  • 语言: 其他
  • 标签:

资源简介

基于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\link.command.1.tlog
     文件        3616  2015-03-25 09:25  摄像头实时监控与报警系统(Opencv)\ms\Debug\ms.tlog\link.read.1.tlog
     文件         242  2015-03-25 09:25  摄像头实时监控与报警系统(Opencv)\ms\Debug\ms.tlog\link.write.1.tlog
     文件         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

评论

共有 条评论

相关资源