// // main.cpp // opencv-learning // // Created by _R on 2019/1/9. // Copyright © 2019 _R. All rights reserved. // #include <iostream> #include <opencv2/opencv.hpp> using namespace std; using namespace cv; int main(int argc, char* argv[]) { VideoCapture video(0); if (!video.isOpened()) { cout << "could not load video file ..." << endl; return -1; } Mat frame, bgMask_MOG2, bgMask_KNN, background; Mat kernel = getStructuringElement(MORPH_RECT, Size(3, 3)); namedWindow("highway_test", WINDOW_AUTOSIZE); namedWindow("background_mask_by_MOG2", WINDOW_AUTOSIZE); namedWindow("background_by_KNN", WINDOW_AUTOSIZE); namedWindow("background_mask_by_KNN", WINDOW_AUTOSIZE); Ptr<BackgroundSubtractor> ptrMOG2 = createBackgroundSubtractorMOG2(); Ptr<BackgroundSubtractor> ptrKNN = createBackgroundSubtractorKNN(); while (1) { video >> frame; ptrMOG2->apply(frame, bgMask_MOG2); morphologyEx(bgMask_MOG2, bgMask_MOG2, MORPH_OPEN, kernel); ptrKNN->apply(frame, bgMask_KNN); ptrKNN->getBackgroundImage(background); imshow("background_by_KNN", background); imshow("background_mask_by_MOG2", bgMask_MOG2); imshow("background_mask_by_KNN", bgMask_KNN); char c = waitKey(50); if (c == 27) { break; } } waitKey(0); video.release(); return 0; }