大佬教程收集整理的这篇文章主要介绍了OpenCV利用背景建模检测运动物体,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
本文实例为大家分享了OpenCV利用背景建模检测运动物体的具体代码,供大家参考,具体内容如下
#include <opencv\highgui.h> #include <stdio.h> int main( int argc,char** argv ){ 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); //打开视频文件 if( !(pCapture = cvCaptureFromfile("vIDeo.avi")) ){ fprintf(stderr,"Can not open vIDeo file vIDeo.avi\n"); return -2; } //逐帧读取视频 while(pFrame = cvqueryFrame( pCapture )){ nFrmNum++; // 第一帧需要申请内存并初始化 if(nFrmNum == 1){ pBkimg = cvCreateImage(cvSize(pFrame->wIDth,pFrame->height),IPL_DEPTH_8U,1); pFrimg = cvCreateImage(cvSize(pFrame->wIDth,1); pBkMat = cvCreateMat(pFrame->height,pFrame->wIDth,CV_32FC1); pFrMat = cvCreateMat(pFrame->height,CV_32FC1); pFrameMat = cvCreateMat(pFrame->height,CV_32FC1); // 转换为单通道图像再处理 cvCvtcolor(pFrame,pBkimg,Cv_bGR2GRAY); cvCvtcolor(pFrame,pFrimg,Cv_bGR2GRAY); cvConvert(pFrimg,pFrameMat); cvConvert(pFrimg,pFrMat); cvConvert(pFrimg,pBkMat); }else{ cvCvtcolor(pFrame,Cv_bGR2GRAY); cvConvert(pFrimg,pFrameMat); // 高斯滤波平滑图像 cvSmooth(pFrameMat,pFrameMat,CV_GAUSSIAN,3,0); // 当前帧与背景图相减 cvAbsDiff(pFrameMat,pBkMat,pFrMat); // 二值化背景图 cvThreshold(pFrMat,60,255.0,CV_THRESH_BINARY); //进行形态学滤波,去除噪声. 效果不好,将行车都作为噪声去除了 //cvErode(pFrimg,1); //cvDilate(pFrimg,1); // 更新背景 cvRunningAvg(pFrameMat,0.003,0); // 将背景转换为图像格式,用于显示 cvConvert(pBkMat,pBkimg); cvShowImage("vIDeo",pFramE); cvShowImage("BACkground",pBkimg); cvShowImage("foreground",pFrimg); if( cvWaitKey(2) >= 0 ) break; } } cvDestroyWindow("vIDeo"); cvDestroyWindow("BACkground"); cvDestroyWindow("foreground"); cvReleaseImage(&pFrimg); cvReleaseImage(&pBkimg); cvReleaseMat(&pFrameMat); cvReleaseMat(&pFrMat); cvReleaseMat(&pBkMat); return 0; }
效果图:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。
以上是大佬教程为你收集整理的OpenCV利用背景建模检测运动物体全部内容,希望文章能够帮你解决OpenCV利用背景建模检测运动物体所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。