opencv之液体杂质检测(6)

main.cpp

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <opencv2/opencv.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/video.hpp>

using namespace cv;
using namespace std;

int main()
{
    VideoCapture capture;

    capture.open("3.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;
}

3.avi:链接:https://pan.baidu.com/s/15gkDMRPDS-LQHyej9E8LXA 密码:6n1w
 

猜你喜欢

转载自blog.csdn.net/juliarjuliar/article/details/79813082