import cv2,time

first_frame=None

video=cv2.VideoCapture(0)

while True:
    check,frame=video.read()
    gray=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
    gray=cv2.GaussianBlur(gray,(21,21),0)
    if first_frame is None:
        first_frame=gray
        continue

    delta_frame=cv2.absdiff(first_frame,gray)
    
    thresh_frame=cv2.threshold(delta_frame,30,255.,cv2.THRESH_BINARY)[1]

    thresh_frame=cv2.dilate(thresh_frame,None,iterations=2)

    (_,cnts,_)=cv2.findContours(thresh_frame.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)

    for contour in cnts:
        if cv2.contourArea(contour) < 1000:
           continue
        
        cv2.drawContours(frame, [contour], 0, (0,0,255), 3)
     
    cv2.imshow("Gray Frame",gray)
    cv2.imshow("Delta Frame",delta_frame)
    cv2.imshow("Threshold Frame",thresh_frame)
    cv2.imshow("Color Frame",frame)
    key=cv2.waitKey(1)
    print(gray)
    print(delta_frame)
    if key==ord('q'):
        break
video.release()
cv2.destroyAllWindows()
