Tampering detection C++ code using BackgroundSubtractorMOG2 

#include"opencv2/opencv.hpp"
#include"opencv2/video/background_segm.hpp"
#include"opencv2/imgproc/imgproc.hpp"
#include "iostream"
#include "vector"
#include "opencv2/highgui/highgui.hpp"
using namespace cv;
using namespace std;
int main ()
{
  Mat frame;
  Mat back;
  Mat fore;
  VideoCapture cap1(1);
  BackgroundSubtractorMOG2 bg;//works on GMM
  bg.set ("nmixtures", 10);
  vector < vector < Point > >contours;
  namedWindow ("Frame");
  int i=0;
	 
  for (;;)
    {
	cap1 >> frame;
    bg.operator()(frame, fore);
    bg.getBackgroundImage (back);
    erode (fore, fore, cv::Mat ());
    erode (fore, fore, cv::Mat ());
    dilate (fore, fore, cv::Mat ());
	dilate (fore, fore, cv::Mat ());
	dilate (fore, fore, cv::Mat ());
	findContours (fore, contours, CV_RETR_EXTERNAL,CV_CHAIN_APPROX_NONE);
    drawContours (frame, contours, -1, Scalar (255, 255, 255), 1);
	Scalar color = Scalar(200,200,200);
	int a=0;
	vector<Rect> boundRect( contours.size() );
    for( int i = 0; i < contours.size(); i++ )
	  {
		   boundRect[i] = boundingRect( contours[i] );
	  }
	for( i = 0; i< contours.size(); i++ )
     {
		if(boundRect[i].width>=40 || boundRect[i].height>=40)//eliminates small boxes
			{
				a=a+(boundRect[i].height)*(boundRect[i].width);
			 }
		    if(a>=int(frame.rows)*int(frame.cols)/2)//change denominator as per convenience
			{
				putText(frame,"Tampering",Point(5,30),FONT_HERSHEY_SIMPLEX,1,Scalar(0,255,255),2);
				cout<<"\a";
			}
	   }
   imshow ("Frame", frame);
   waitKey(10);	 
 }
  return 1;
}