import cv2
import winsound
cam = cv2.VideoCapture(0)

while cam.isOpened():

    ret,frame1 = cam.read()
    ret,frame2 = cam.read()
    diff = cv2.absdiff(frame1,frame2)
    gray = cv2.cvtColor(diff,cv2.COLOR_BGR2GRAY)
    blur = cv2.GaussianBlur(gray,(5,5),0)
    # through threshold we are getting rid of noises or unwanted things
    _, threshold = cv2.threshold(blur,20,255,cv2.THRESH_BINARY)# threshold limit
    # through dilating we are taking the significant changes
    dilated = cv2.dilate(threshold,None,iterations=3)
    # for getting boundary of moving and static
    contours, _ = cv2.findContours(dilated,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
    # cv2.drawContours(frame1,contours,-1,(0,0,255),2)
    for c in contours:
        if cv2.contourArea(c) < 6000:
            continue
        x,y,w,h = cv2.boundingRect(c)
        cv2.rectangle(frame1,(x,y),(x+w,y+h),(0,0,255),2)
        winsound.Beep(1000,800)# 500 frequency, 200ms
        #winsound.PlaySound('alert.wav', winsound.SND_ASYNC)#sound will be going on
    if cv2.waitKey(5) == ord('q'):
        break

    cv2.imshow('Security Camera',frame1)

cam.release()
cv2.destroyAllWindows()
