资源简介
opencv运动物体检测,检测视频中的运动物体,并分离出前景背景
代码片段和文件信息
#include
#include
#include
#include
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“ 10 0);
//cvMoveWindow(“background“ 360 0);
cvMoveWindow(“foreground“ 690 0);
if( argc > 2 )
{
fprintf(stderr “Usage: bkgrd [video_file_name]\n“);
return -1;
}
//打开摄像头
if (argc ==1)
if( !(pCapture = cvCaptureFromCAM(-1)))
{
fprintf(stderr “Can not open camera.\n“);
return -2;
}
//打开视频文件
if(argc == 2)
if( !(pCapture = cvCaptureFromFile(argv[1])))
{
fprintf(stderr “Can not open video file %s\n“ argv[1]);
return -2;
}
//逐帧读取视频
while(pframe = cvQueryframe( pCapture ))
{
nFrmNum++;
//如果是第一帧,需要申请内存,并初始化
if(nFrmNum == 1)
{
pBkImg = cvCreateImage(cvSize(pframe->width pframe->height) IPL_DEPTH_8U1);
pFrImg = cvCreateImage(cvSize(pframe->width pframe->height) IPL_DEPTH_8U1);
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;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 188488 2010-01-20 21:52 MotionDetection\Debug\MotionDetection.exe
文件 210380 2010-01-20 21:52 MotionDetection\Debug\MotionDetection.ilk
文件 17356 2010-01-20 21:52 MotionDetection\Debug\MotionDetection.obj
文件 4115936 2010-01-20 21:49 MotionDetection\Debug\MotionDetection.pch
文件 459776 2010-01-20 21:52 MotionDetection\Debug\MotionDetection.pdb
文件 156672 2010-01-23 23:26 MotionDetection\Debug\vc60.idb
文件 94208 2010-01-20 21:52 MotionDetection\Debug\vc60.pdb
文件 3064 2010-01-20 21:52 MotionDetection\MotionDetection.cpp
文件 4278 2010-01-20 21:54 MotionDetection\MotionDetection.dsp
文件 555 2010-01-20 21:45 MotionDetection\MotionDetection.dsw
文件 41984 2010-01-23 23:27 MotionDetection\MotionDetection.ncb
文件 48640 2010-01-23 23:27 MotionDetection\MotionDetection.opt
文件 264 2010-01-23 23:26 MotionDetection\MotionDetection.plg
目录 0 2010-01-20 21:52 MotionDetection\Debug
目录 0 2010-01-23 23:27 MotionDetection
----------- --------- ---------- ----- ----
5341601 15
相关资源
- 基于opencv 的图像局部放大
- Opencv静态手势识别
- 双边滤波opencv实现
- 图像的平均亮度
- Opencv绘制物体轮廓,定位主要物件坐
-
OpenCV生成xm
l分类器文件 - Linux下QT及OpenCV搭建
- 张正友相机标定(OpenCV实现)223402
- Adaboost人头部检测 opencv vc
- OpenCv+Ocr 图片文字识别源码
- 于老师的人脸识别VS2015工程
- opencv相机检校
- 车型识别系统vc源码opencv
- opencv依靠颜色识别和跟踪物体
- OpenCV的PCA人脸识别
- openCV+qt视频传输
- OpenCV 现实高斯金字塔的源码,非常经
- opencv运动目标检测与跟踪源代码
- labview与Opencv 人眼识别
- opencv 将两幅等宽图像拼接在一起
- 图像分类代码
- OpenCV 1.0.0 patch for ffmpeg errors
- 车辆分类检测正负样本共计1000张
- 使用Visual Studio+OpenCV进行的Susan算子边
- 跟踪特征点并画AR物体
- 别踩白块 毕业论文
- 支持OpenCV3.2的opencv_ffmpeg.7z
- openCVSharp Unity3d
- 彩色图像的SVM分割,Opencv实现
- OpenCV2.31库
评论
共有 条评论