import pandas 
import imutils
import time
import cv2
from datetime import datetime

first_frame = None
status_list=[None,None]
times=[]
df=pandas.DataFrame(columns=["Start","End"])
video=cv2.VideoCapture(0)

while True:
	check,frame=video.read()
	status=0
	gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
	gray = cv2.GaussianBlur(gray, (21, 21), 0)

	if first_frame is None:
		first_frame=gray
		continue
	status=1

	delta_frame = cv2.absdiff(first_frame, gray)
	thresh_delta = cv2.threshold(delta_frame, 25, 255, cv2.THRESH_BINARY)[1]
	thresh_delta= cv2.dilate(thresh_delta, None, iterations=0)
	cnts= cv2.findContours(thresh_delta.copy(), cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
	cnts = imutils.grab_contours(cnts)

	for contour in cnts:
		if cv2.contourArea(contour) <10000:
			continue
		status=1
		(x, y, w, h) = cv2.boundingRect(contour)
		cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 3)
         	    
	status_list.append(status)
	status_list=status_list[-2:]

	if status_list[-1]==1 and status_list[-2]==1:
		times.append(datetime.now())
	if status_list[-1]==0 and status_list[-2]==1:
		times.append(datetime.now())


	cv2.imshow("Security Feed", frame)
	cv2.imshow("Thresh", thresh_delta)
	cv2.imshow("Frame Delta",delta_frame)

	key = cv2.waitKey(1)

	if key == ord("q"):
		break


for i in range(0,len(times),2):
	df=df.append({"Start":times[i],"End":times[i+1]},ignore_index=True)
df.to_csv("TimeRecord.csv")

video.release()
cv2.destroyAllWindows()