opencv::BackgroundSubtraction基本原理
生活随笔
收集整理的這篇文章主要介紹了
opencv::BackgroundSubtraction基本原理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
背景消除
BS算法
- 圖像分割(GMM – 高斯混合模型)
- 機器學習(KNN –K個最近鄰)
BackgroundSubtractor (父類) - BackgroundSubtractorMOG2 - BackgroundSubtractorKNN
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char**) {
VideoCapture capture;
capture.open("D:/images/video_004.avi");
if (!capture.isOpened()) {
printf("could not find the video file...
");
return -1;
}
// create windows
Mat frame;
Mat bsmaskMOG2, bsmaskKNN;
namedWindow("input video", CV_WINDOW_AUTOSIZE);
namedWindow("MOG2", CV_WINDOW_AUTOSIZE);
Mat kernel = getStructuringElement(MORPH_RECT, Size(3, 3), Point(-1, -1));
// MOG2 BS
Ptr<BackgroundSubtractor> pMOG2 = createBackgroundSubtractorMOG2();
// KNN BS
Ptr<BackgroundSubtractor> pKNN = createBackgroundSubtractorKNN();
while (capture.read(frame)) {
imshow("input video", frame);
pMOG2->apply(frame, bsmaskMOG2);
morphologyEx(bsmaskMOG2, bsmaskMOG2, MORPH_OPEN, kernel, Point(-1, -1));
imshow("MOG2", bsmaskMOG2);
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;
}
總結
以上是生活随笔為你收集整理的opencv::BackgroundSubtraction基本原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苹果iPhone 14这些地方可能会减配
- 下一篇: Interval Bound Propa