opencv背景去除建模(BSM)

opencv提供两种BS算法:

1.基于图像分割(GMM-高斯混合模型);

2.机器学习(KNN-K近邻)。

下面是基于以上两种BS算法的示例代码:

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main()
{
    VideoCapture capture;

    capture.open("1.avi");
    if(!capture.isOpened())
    {
        cout << "could not find the video file ..." << endl;
        return -1;
    }

    Mat frame;
    Mat bsmaskMOG2;
    Mat bsmaskKNN;

    namedWindow("input video", CV_WINDOW_AUTOSIZE);
    namedWindow("MOG2", CV_WINDOW_AUTOSIZE);
    namedWindow("KNN", CV_WINDOW_AUTOSIZE);

    Mat kernel = getStructuringElement(MORPH_RECT, Size(3, 3), Point(-1, -1));//形态学开操作

    //init BS
    Ptr<BackgroundSubtractor> pMOG2 = createBackgroundSubtractorMOG2();
    Ptr<BackgroundSubtractor> pKNN = createBackgroundSubtractorKNN();

    while(capture.read(frame))
    {
        imshow("input video", frame);

        //BSM MOG
        pMOG2->apply(frame, bsmaskMOG2);
        morphologyEx(bsmaskMOG2, bsmaskMOG2, MORPH_OPEN,kernel, Point(-1, -1));//形态学开操作去噪点
        imshow("MOG2", bsmaskMOG2);

        //BSM KNN
        pKNN->apply(frame, bsmaskKNN);
        morphologyEx(bsmaskKNN, bsmaskKNN, MORPH_OPEN,kernel, Point(-1, -1));//形态学开操作去噪点
        imshow("KNN", bsmaskKNN);

        char c = waitKey(100);
        if(c == 27)
        {
            break;
        }
    }

    capture.release();

    waitKey(0);

    return 0;
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洪流之源

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值