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

using namespace cv;
using namespace std;

int main(int argc, char **argv) {
	VideoCapture capture;
	capture.open("D:/picture/opencv/images/video_003.avi");
	if (!capture.isOpened()) {
		printf("could not load video file...\n");
		return -1;
	}
	Mat frame;
	Mat bsmaskMOG2;
	Mat bsmaskKNN;
	namedWindow("Video-demo", CV_WINDOW_AUTOSIZE);
	namedWindow("MOG2", CV_WINDOW_AUTOSIZE);
	namedWindow("KNN Model", CV_WINDOW_AUTOSIZE);

	Mat kernel = getStructuringElement(MORPH_RECT, Size(3, 3), Point(-1, -1));
	//intialization BS
	Ptr<BackgroundSubtractor> pMOG2 = createBackgroundSubtractorMOG2();
	Ptr<BackgroundSubtractor> pKNN = createBackgroundSubtractorKNN();

	while (capture.read(frame)) {
		imshow("Video-demo", frame);

		//MOG2 BSM
		pMOG2->apply(frame, bsmaskMOG2);
		Mat kernel = getStructuringElement(MORPH_RECT, Size(3, 3), Point(-1, -1));
		morphologyEx(bsmaskMOG2, bsmaskMOG2, MORPH_OPEN, kernel, Point(-1, -1));
		imshow("MOG2", bsmaskMOG2);

		//KNN BSM
		pKNN->apply(frame, bsmaskKNN,-1);
		imshow("KNN Model", bsmaskKNN);
		//show mask
		char c = waitKey(100);
		if (c == 27)
			break;
	}
	capture.release();
	waitKey(0);
	return 0;
}

背景消去建模(BSM)原理及代码演示

相关文章:

  • 2022-02-06
  • 2021-08-08
  • 2021-09-14
  • 2021-07-12
  • 2022-02-02
  • 2021-10-19
  • 2021-11-03
  • 2021-06-27
猜你喜欢
  • 2021-11-16
  • 2021-11-12
  • 2022-12-23
  • 2021-07-16
  • 2021-05-11
  • 2021-05-28
相关资源
相似解决方案