视频 背景建模,运动物体检测
来源:互联网 发布:java ftp下载文件状态 编辑:程序博客网 时间:2024/05/19 20:39
/************************************************** * 背景建模,运动物体检测 * **************************************************/ /*********************************************************************** * OpenCV example * By Shiqi Yu 2006 ***********************************************************************/ #include <stdio.h> #include <cv.h>#include <cxcore.h>#include <highgui.h> int main( int argc, char** argv ){ //声明IplImage指针 IplImage* pFrame = NULL; IplImage* pFrImg = NULL; IplImage* pBkImg = NULL; CvMat* pFrameMat = NULL; CvMat* pFrMat = NULL; CvMat* pBkMat = NULL; CvCapture* pCapture = NULL; int nFrmNum = 0; //创建窗口 cvNamedWindow("video", 1); cvNamedWindow("background",1); cvNamedWindow("foreground",1); //使窗口有序排列 cvMoveWindow("video", 30, 0); cvMoveWindow("background", 360, 0); cvMoveWindow("foreground", 690, 0); //打开摄像头 pCapture = cvCaptureFromCAM(0); //打开视频文件 //逐帧读取视频 while(pFrame = cvQueryFrame( pCapture )) { nFrmNum++; //如果是第一帧,需要申请内存,并初始化 if(nFrmNum == 1){ pBkImg = cvCreateImage(cvSize(pFrame->width, pFrame->height), IPL_DEPTH_8U,1); pFrImg = cvCreateImage(cvSize(pFrame->width, pFrame->height), IPL_DEPTH_8U,1); pBkMat = cvCreateMat(pFrame->height, pFrame->width, CV_32FC1); pFrMat = cvCreateMat(pFrame->height, pFrame->width, CV_32FC1); pFrameMat = cvCreateMat(pFrame->height, pFrame->width, CV_32FC1); //转化成单通道图像再处理 cvCvtColor(pFrame, pBkImg, CV_BGR2GRAY); cvCvtColor(pFrame, pFrImg, CV_BGR2GRAY); cvConvert(pFrImg, pFrameMat); cvConvert(pFrImg, pFrMat); cvConvert(pFrImg, pBkMat);} else{ cvCvtColor(pFrame, pFrImg, CV_BGR2GRAY); cvConvert(pFrImg, pFrameMat); //高斯滤波先,以平滑图像 //cvSmooth(pFrameMat, pFrameMat, CV_GAUSSIAN, 3, 0, 0); //当前帧跟背景图相减 cvAbsDiff(pFrameMat, pBkMat, pFrMat); //二值化前景图 cvThreshold(pFrMat, pFrImg, 60, 255.0, CV_THRESH_BINARY); //进行形态学滤波,去掉噪音 //cvErode(pFrImg, pFrImg, 0, 1); //cvDilate(pFrImg, pFrImg, 0, 1); //更新背景 cvRunningAvg(pFrameMat, pBkMat, 0.003, 0); //将背景转化为图像格式,用以显示 cvConvert(pBkMat, pBkImg); //显示图像 cvShowImage("video", pFrame); cvShowImage("background", pBkImg); cvShowImage("foreground", pFrImg); //如果有按键事件,则跳出循环 //此等待也为cvShowImage函数提供时间完成显示 //等待时间可以根据CPU速度调整 if( cvWaitKey(2) >= 0 ) break; } } //销毁窗口 cvDestroyWindow("video"); cvDestroyWindow("background"); cvDestroyWindow("foreground"); //释放图像和矩阵 cvReleaseImage(&pFrImg); cvReleaseImage(&pBkImg); cvReleaseMat(&pFrameMat); cvReleaseMat(&pFrMat); cvReleaseMat(&pBkMat); cvReleaseCapture(&pCapture); return 0;}
0 0
- 视频 背景建模,运动物体检测
- OpenCV:利用背景建模检测运动物体
- OpenCV学习之利用背景建模检测运动物体
- 混合高斯背景建模-视频的运动目标检测
- 运动物体的检测--对视频检测
- 运动物体视频背景合成 vc编写
- 运动目标检测_单高斯背景建模
- 将用于视频运动检测的单高斯背景建模算法移植于YUV颜色空间
- 运动检测(前景检测)(入门学习背景建模)
- 运动物体的检测--对视频检测的改进
- 基于平均背景建模的运动目标检测
- 基于平均背景建模的运动目标检测(二)
- 基于codebook背景建模的运动目标检测
- 运动目标检测_混合高斯背景建模
- 运动检测与跟踪_混合高斯背景建模
- opencv运动物体检测
- 运动背景建模
- “背景建模/背景减法/前景检测”测试视频库
- C++第二次试验——分段函数的运算
- tomcat虚拟路径的几种配置方法
- leetcode_328_Odd Even Linked List(easy)(C++)
- c++第2次上机实验
- [IOS 开发] iOS音频篇:使用AVPlayer播放网络音乐
- 视频 背景建模,运动物体检测
- 河内塔算法
- 【OpenGL/ES】 第04讲 glTexImage2D用法的区别
- c++2
- 拷贝文件目录(可根据后缀过滤文件)
- Mason 入门例子1 --- 基本概念及建立空仿真
- iOS海哥开发笔记(开发中如何使用数据持久化)海哥原创,让你对存储知识一目了然
- Java程序运行机制及运行过程
- eclipse安装quick text search插件,全文搜索