getBackgroundImage因BackgroundSubtractorMOG而失败

时间:2014-04-01 12:18:36

标签: c++ opencv

我想从BackgroundSubtractorMOG中使用函数getBackgroundImage().

检索BackgroundImage

不幸的是我总是得到一个空矩阵。

这种行为是OpenCV2.4.8中的错误还是mabye必须进行某种额外的启动? (如果从MOG切换到MOG2,它可以正常工作。)

this question.

启发的当前初始化

示例代码:

int main(int argc, char *argv[]){

    BackgroundSubtractorMOG mog(3, 4, 0.8);
    cv::VideoCapture cap(0);

    cv::Mat frame, backMOG, foreMOG;
    for(;;){
        cap >> frame;

        mog(frame, foreMOG,-1);
        cv::imshow("foreMOG", foreMOG);

        mog.getBackgroundImage(backMOG);
        if(!backMOG.empty()){
            cv::imshow("backMOG", backMOG); //never reached
        }

        if(cv::waitKey(30) >= 0) break;
    }
    return 0;
}

1 个答案:

答案 0 :(得分:2)

正如@Micka在评论中正确指出的那样:它还没有实现!

mog.getBackgroundImage(backMOG);的电话会跳转到

void BackgroundSubtractor::getBackgroundImage(OutputArray) const {}

文件bgfg_gaussmix2.cpp中的

长话短说:BackgroundSubtractorGMGBackgroundSubtractorMOG目前不在OpenCV 2.4.8中实现getBackgroundImage。只有BackgroundSubtractorMOG2支持它。