如何设置nmixures'和' bShadowDetection' ' BackgroundSubtractorMOG2'中的值

时间:2013-06-17 08:56:00

标签: c++ image opencv image-processing artificial-intelligence

请查看以下代码

#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/video/background_segm.hpp>

using namespace cv;
using namespace std;

Mat frame,back,fore;

int main()
{
    VideoCapture cam;
    BackgroundSubtractorMOG2 bgs(0,0,false);
    vector<vector<Point>>contours;

    bgs.setInt("nmixtures",3);

    cam.open(0);

    if(!cam.isOpened())
    {
        cout << "Cam not Found";
        return -1;
    }



    namedWindow("Frame");

    while(true)
    {
        cam>>frame;
        imshow("Frame",frame);

        if(waitKey(30)>=0)
        {
            break;
        }
    }
}

我正在尝试将nmixures BackgroundSubtractorMOG2的值设置为3 bShadowDetection BackgroundSubtractorMOG2 false

但是,与OpenCV 2.4.5一样,这些值设置为私有,因此我无法直接访问它们。我设法通过构造函数设置bShadowDetection的值(虽然我知道其他2个参数是什么),但我找不到设置nmixers的方法。我不知道我设置nmixures的方式是否正确,因为在我读过的文章中,作者说“在opencv 2.4的情况下通过构造函数设置它们”

你能告诉我如何设置这两个值吗?

2 个答案:

答案 0 :(得分:2)

在OpenCV 2.4.8。中:

bgs.set("nmixtures", 3);
bgs.set("detectShadows", false);

答案 1 :(得分:1)

在你的情况下,你必须写:

BackgroundSubtractorMOG2 bgs;
bgs.setInt("nmixtures", 3);
bgs.setBool("detectShadows", false);