千家信息网

OpenCV如何实现智能视频监控

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章给大家分享的是有关OpenCV如何实现智能视频监控的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。之前在做毕设的时候网上找个完整的实现代码挺麻烦的,自己做完分享一下因
千家信息网最后更新 2026年11月04日OpenCV如何实现智能视频监控

这篇文章给大家分享的是有关OpenCV如何实现智能视频监控的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

之前在做毕设的时候网上找个完整的实现代码挺麻烦的,自己做完分享一下

因为代码较为简单,没有将代码分开写在不同文件,有需要自己整合下哈

使用环境Visual Studio 2010 和 OpenCV 2.4.9

#include #include #include using namespace std;using namespace cv; int videoplay();void on_Trackbar(int ,void*);char* str_gettime();int bSums(Mat src); char g_str[17];int g_nNum = 0;//图片名称int g_nDelay = 0;int g_npic = 0;Mat g_filpdstMat;int g_pointnum = 1000;//设置像素点阈值生成图片int g_pixel = 0;//像素点 int main(){ VideoCapture capture(0); //视频输出VideoWriter CvVideoWriter* outavi = NULL; //VideoWriter outavi; //outavi.open("sre.avi",-1, 5.0, Size(640, 480), true); outavi = cvCreateVideoWriter("录像.avi", -1, 5.0, cvSize(640, 480), 1); namedWindow("摄像头",WINDOW_AUTOSIZE); namedWindow("移动轨迹",WINDOW_AUTOSIZE); IplImage *pcpframe = NULL; Mat tempframe, currentframe, preframe, cpframe; Mat frame,jpg; int framenum = 0; //读取一帧处理 while (1) { if(!capture.isOpened()) { cout << "读取失败" << endl; return -1; } capture >> frame;//读取摄像头把每一帧传给frame frame.copyTo(cpframe);//把frame赋给cpframe,不影响frame tempframe = frame;//把frame赋给tempframe,影响frame flip(tempframe,g_filpdstMat,1);//水平翻转图像 pcpframe = &IplImage(cpframe);//为了释放窗口,把Mat转化为IplImage使用 //cpframe=cvarrToMat(pcpframe); //ipl转化矩阵 pBinary = &IplImage(Img) //7帧截取一次录入视频,频繁截取运转不过来 if(framenum % 7 == 0) { //录像写入 cvWriteFrame(outavi, pcpframe); } //判断帧数,若为第一帧,把该帧作为对比帧 //若大于等于第二帧,则进行帧差法处理 framenum++; if (framenum == 1) { cvtColor(g_filpdstMat, preframe, CV_BGR2GRAY); } if (framenum >= 2) { cvtColor(g_filpdstMat, currentframe, CV_BGR2GRAY); //灰度图 absdiff(currentframe,preframe,currentframe);//帧差法 threshold(currentframe, currentframe, 30, 255.0, CV_THRESH_BINARY); //二值化 erode(currentframe, currentframe,Mat());//腐蚀 dilate(currentframe, currentframe,Mat());//膨胀 g_pixel = bSums(currentframe);//调用函数bSums,计算白色像素点,赋值给g_pixel //小延迟后输出当前像素点数值,防止数据刷太快看不清 g_nDelay++; if(g_nDelay > 5) { cout<< "当前白色像素点:" <>frame; if(frame.empty()) { break; } cvNamedWindow("视频", CV_WINDOW_AUTOSIZE); imshow("视频",frame); waitKey(30); } cvDestroyWindow("视频"); return 0;} //滑轨设定阈值判定是否保存当前摄像头图片void on_Trackbar(int ,void*){ //保存来人图片 if(g_pixel > g_pointnum) { g_npic++; if(g_npic > 5)//为了避免风吹草动,小延迟之后才保存图片 { //保存图片 cout << endl << endl; cout << "场地异常,警报响应,准备拍照...\a" << endl; imwrite(str_gettime(),g_filpdstMat); cout << "当前白色像素点:" <::iterator it = src.begin(); Mat_::iterator itend = src.end(); for (; it!=itend; ++it) { if((*it)>0) counter+=1;//二值化后,像素点是0或者255 } return counter;}

感谢各位的阅读!关于"OpenCV如何实现智能视频监控"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

像素 图片 视频 代码 摄像头 白色 摄像 智能 视频监控 监控 内容 函数 图像 录像 日期 时间 更多 环境 篇文章 阈值 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 深圳市人人互联网科技有限公司 互联网科技工作委员会副主任毛军 科技互联网公司logo 山东吉时兔互联网科技有限公司 济南华为互联网科技产业总部基地 恒银科技与互联网金融 茂名市互联网科技产业园 浙江互联网科技研学营 崇明区互联网教育科技售后服务 互联网科技产业特征 移动互联网年度科技创新 搜狐科技互联网 链环科技传统企业怎么转型互联网 燊美集互联网科技有限公司 长沙茂晟互联网科技有限公司 产业互联网科技服务公司 互联网对科技影响 互联网的黑科技实验室 如何强化互联网金融科技 科技发展第三阶段互联网时代 云信互联网科技有限公司 互联网科技与金融科技 奇酷互联网科技 互联网高科技企业 互联网科技公司有哪些 互联网公司会议桌创意科技软装饰 互联网媒体平台算高科技产业 企晟互联网信息科技有限公司 华人运通互联网科技公司 互联网科技创新方面的资料
0