OpenCV_背景差分

3.x は、BackgroundSubtractorMOG2 を使うもよう。

 

ただのソースコピペ

    int main(int argc, char * argv[])
    {
        cv::VideoCapture cap("./hoge.wmv");
        cv::namedWindow("test", CV_WINDOW_NORMAL);
        cv::Mat src;
        cv::Ptr<cv::BackgroundSubtractorMOG2> pMOG2;
        pMOG2 = cv::createBackgroundSubtractorMOG2(500, 16, true);
        cap >> src;
        while (!src.empty())
        {
            cv::Mat foreGroundMask;
            pMOG2->apply(src, foreGroundMask);
            cv::imshow("test", foreGroundMask);
            if (cv::waitKey(1) == 0x1b)    //ESCキー
            {
                break;
            }
            cap >> src;
        }
        return 0;
    }

CV_WINDOW_NORMAL
ウィンドウサイズ変更できるようになる。

 

createBackgroundSubtractorMOG2 の引数

1:過去何フレームまでを分布推定(モデル推定)に利用するかを指定

2:各ピクセルが背景モデルに含まれるかどうかを判断するための閾値

3:影の影響を考慮するかどうかを指定

 

 

こちらから。
https://gbiggs.github.io/ros_moveit_rsj_tutorial/image_processing_and_opencv.html
http://cvl-robot.hateblo.jp/entry/2016/04/18/141445
OpenCVで背景差分 - whoopsidaisies's diary

 

以上。分布推定など全く理解してない。