OpenCV_基于自适应背景更新的运动目标检测
来源:互联网 发布:pdf拆分软件下载 编辑:程序博客网 时间:2024/04/30 07:09
下面这段代码利用OpenCV实现了最为简单的基于自适应背景更新的运动目标检测算法。
即:
运动前景提取——背景减除
foreground = |frame - background| > threshold
更新背景模型——滑动平均滤波
background = background + (frame - background) * alpha = background * (1 - alpha) + frame * alpha
//运动前景检测——基于自适应背景更新//Author: www.icvpr.com//Blog: http://blog.csdn.net/icvpr#include <iostream>#include <string>#include <opencv2/opencv.hpp>int main(int argc, char** argv){std::string videoFileName = "../test.avi";int threshold = 25 ; // 二值化阈值float alpha = 0.01; // 更新速度 [0, 1]cv::VideoCapture capture;capture.open(videoFileName);if (!capture.isOpened()){std::cout<<"cannot open video"<<std::endl;return -1;}cv::Mat foregroundImg;cv::Mat foregroundMat;cv::Mat backgroundImg;cv::Mat backgroundMat;cv::Mat frame;cv::Mat grayImg;cv::Mat grayMat;while (capture.read(frame)){cv::cvtColor(frame, grayImg, CV_BGR2GRAY);grayImg.convertTo(grayMat, CV_32FC1);if (backgroundMat.empty()){grayImg.copyTo(backgroundImg);grayImg.convertTo(backgroundMat, CV_32FC1);}// 背景减除cv::absdiff(grayMat, backgroundMat, foregroundMat);// 自适应背景更新cv::addWeighted(backgroundMat, alpha, foregroundMat, 1-alpha, 0, backgroundMat);// 二值化,获取前景像素点cv::threshold(foregroundMat, foregroundMat, threshold, 255, CV_THRESH_BINARY);// 为了显示用,将CV_32FC1转换为CV_8Ucv::convertScaleAbs(foregroundMat, foregroundImg);cv::convertScaleAbs(backgroundMat, backgroundImg);cv::imshow("frame", frame);cv::imshow("foreground", foregroundImg);cv::imshow("background", backgroundImg);if (cv::waitKey(25) > 0){break;}}return 0;}
相关内容:www.icvpr.com
--------------------------------------------------------
< 转载请注明:http://blog.csdn.net/icvpr>
- OpenCV_基于自适应背景更新的运动目标检测
- OpenCV_基于自适应背景更新的运动目标检测
- OpenCv_光流法运动目标检测
- OpenCV_基于混合高斯模型GMM的运动目标检测
- OpenCV_基于混合高斯模型GMM的运动目标检测
- OpenCV_基于混合高斯模型GMM的运动目标检测
- OpenCV_基于混合高斯模型GMM的运动目标检测
- OpenCV_基于混合高斯模型GMM的运动目标检测
- OpenCV_基于混合高斯模型GMM的运动目标检测
- 基于像素自适应分割的运动目标检测算法
- 基于像素自适应分割的运动目标检测算法
- 基于自组织背景减除的运动目标检测算法
- 【OPENCV】基于背景差法的运动目标检测
- 基于平均背景建模的运动目标检测
- 基于平均背景建模的运动目标检测(二)
- 基于codebook背景建模的运动目标检测
- 运动背景下的运动目标检测
- 动态背景下的运动目标检测
- [设计模式]Prototype原型模式
- 如何在Node.js中获取本机IP地址
- box2d钢体移到方法
- 设计模式之命令模式
- makefile杂谈之三
- OpenCV_基于自适应背景更新的运动目标检测
- 在bcm97313上跑libtomcrypto (上)——makefile重写
- linux下tftp32的使用
- 由随机函数rand7构造rand10
- [Java]过时data.toLocaleString()的解决方法
- 浅谈矩阵分解以及应用(1)
- stunnel 工作简述
- 在jsp页面中实现递归显示树状结构(树状bbs)
- Icenium:Doug Seven谈针对iOS与Android构建混合移动应用