当前位置:   article > 正文

opencv(C++)实现视频背景消除建模(BSM)_c++ opencv 去除印章

c++ opencv 去除印章

1.基本原理

 读取当前帧的视频与背景相减,设立阈值进行二值化,提取前景。

2.背景获取

  BS算法

   -图像分割(GMM-高斯混合模型)

    优点:   抑制光线干扰   

   -机器学习 (KNN-k个最近邻)

3.opencv实现

  1. #include<opencv2/opencv.hpp>
  2. #include <iostream>
  3. using namespace cv;
  4. using namespace std;
  5. int main(int argc,char** argv) {
  6. VideoCapture capture;
  7. capture.open("E:/C++/test6/video/红外视频/IR.avi");
  8. //VideoCapture capture(0);
  9. if (!capture.isOpened()) {
  10. printf("could not load video data...\n");
  11. return -1;
  12. }
  13. double fps = capture.get(CV_CAP_PROP_FPS);
  14. printf("FPS:%f",fps);
  15. VideoWriter writer("E:/C++/test6/video/红外视频/visit.avi",-1,15,Size(640,480),true);
  16. Mat frame,gray,binary;
  17. Mat bsmaskMOG2;
  18. namedWindow("video_demo",CV_WINDOW_AUTOSIZE);
  19. namedWindow("MOG2", CV_WINDOW_AUTOSIZE);
  20. Ptr<BackgroundSubtractor>pMOG2 = createBackgroundSubtractorMOG2();
  21. while(capture.read(frame)){
  22. cvtColor(frame, gray, COLOR_BGR2GRAY);
  23. //threshold(gray, binary, 0, 255, THRESH_BINARY | THRESH_OTSU);
  24. //bitwise_not(frame, frame);
  25. //bitwise_(frame);
  26. imshow("video_demo", gray);
  27. pMOG2->apply(frame,bsmaskMOG2);
  28. imshow("MOG2", bsmaskMOG2);
  29. //writer.write(frame);
  30. char c = waitKey(100);
  31. if (c == 27) {
  32. break;
  33. }
  34. }
  35. capture.release();
  36. waitKey(0);
  37. return 0;
  38. }

4.实验结果

    

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/一键难忘520/article/detail/986251
推荐阅读
相关标签
  

闽ICP备14008679号