之前据说基于2.3以上的高斯混合模型不显示前景图像了,尝试了一下,果然如此,让我这种需要看检测结果的情何以堪,后来摸索着重新实现了看到前景图像。
其实也挺简单的,因为opencv已经封装好了这个算法,所以只需要使用一下函数就可以了。
#include "stdafx.h"
#include <iostream>
#include <string>
#include <opencv2/opencv.hpp>
int main(int argc, char** argv)
{
cvNamedWindow("demo",CV_WINDOW_AUTOSIZE);
cvNamedWindow("background",CV_WINDOW_AUTOSIZE);
CvCapture *pCap = cvCreateFileCapture("5.avi");
cv::BackgroundSubtractorMOG2 mog;
cv::Mat foreground;
cv::Mat background;
cv::Mat frame;
while(1){
frame = cvQueryFrame(pCap);
mog(frame, foreground, 0.01);
mog.getBackgroundImage(background);
cv::imshow("background",foreground);
if (cv::waitKey(25) > 0)
{
break;
}
}
return 0;
}
----------------------------------------------------------------------------------------------------------
P.S 组织了一个计算机视觉的开发者交流微信群,目标是汇集计算机视觉和图像处理的开发者分享开发经验,共同探讨技术,有兴趣入群的可以加我微信(WeChat: LaurenLuoYun),请注明“姓名-公司/学校-技术方向”,谢谢。