之前据说基于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),请注明“姓名-公司/学校-技术方向”,谢谢。
在OpenCV 2.3以上版本中,基于高斯混合模型的前景分离功能不再显示前景图像,但通过深入研究,可以重新实现该功能。本文介绍了如何利用OpenCV的内置算法简单实现这一目标,使开发者能够观察到检测结果。
7705

被折叠的 条评论
为什么被折叠?



