- Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmotion_detector.py
More file actions
Latest commit
86 lines (60 loc) · 2.23 KB
/
Copy pathmotion_detector.py
File metadata and controls
86 lines (60 loc) · 2.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
importcv2 ,time
importpandasaspd
fromdatetimeimportdatetime
# face_cascade=cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
video=cv2.VideoCapture(0)
# video=cv2.VideoCapture(0,cv2.CAP_DSHOW)
# video=cv2.VideoCapture("anna.mp4")
video.read()
time.sleep(2)
times=[]
status_list=[None,None]
first_frame=None
df=pd.DataFrame(columns=["Start","End"])
whileTrue:
check, frame=video.read()
status=0
gray=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
gray=cv2.GaussianBlur(gray,(21,21),0) #### Convert for more resolution and accuracy to Gaussian
iffirst_frameisNone:
first_frame=gray
continue
# Delta frame difference between furst frame anthe current frame this differne will give another image
delta_frame=cv2.absdiff(first_frame,gray)
thresh_frame=cv2.threshold(delta_frame, 30 , 255, cv2.THRESH_BINARY)[1]
#to remove the black area and smooth the images
thresh_frame=cv2.dilate(thresh_frame,None,iterations=2)
(cnts,_)=cv2.findContours(thresh_frame.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
'''
The function dilates the source image using the specified structuring element that determines the .
shape of a pixel neighborhood over which the maximum is taken
The contours
are a useful tool for shape analysis and object detection and recognition
'''
forcontourincnts:
ifcv2.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)
ifstatus_list[-1]==1andstatus_list[-2]==0:
times.append(datetime.now())
ifstatus_list[-1]==0andstatus_list[-2]==1:
times.append(datetime.now())
cv2.imshow('Color Frame',frame)
cv2.imshow("delta",delta_frame)
cv2.imshow("Threshold frame",thresh_frame)
key=cv2.waitKey(1)
ifkey==ord('q'):
ifstatus==1:
times.append(datetime.now())
break
print(status_list)
print(times)
# print(gray)
foriinrange(0,len(times),2):
df=df.append({"Start":times[i],"End":times[i+1] },ignore_index=True )
df.to_csv("Times.csv")
video.release()
cv2.destroyAllWindows()