-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathprocessing.py
More file actions
87 lines (65 loc) · 2.1 KB
/
processing.py
File metadata and controls
87 lines (65 loc) · 2.1 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
87
import cv2
import os
from detecter import Detecter
from mosaicer import mosaicer
import schedule
import time
import datetime
import matplotlib.pyplot as plt
from config import SAMPLING_CYCLE,TOTAL_MIN,CAPTURE_CYCLE
Detecter = Detecter()
mosaicer = mosaicer()
def job():
stack=[]
PATH="data/images/"
date=datetime.datetime.now().strftime("%Y-%m-%d")
target =date+".mp4"
os.mkdir(PATH+date)
cam = cv2.VideoCapture("data/videos/" + target)
minute=datetime.datetime.now().minute
FPS = 1
try:
if not os.path.exists('data'):
os.makedirs('data')
except OSError:
print('Error: Creating directory of data')
currentframe = 0
capture_rate = 60#int(cam.get(cv2.CAP_PROP_FPS))
end_of_frame = cam.get(cv2.CAP_PROP_FRAME_COUNT)
# print(end_of_frame)
stat_of_frame =0# minute*(cam.get(cv2.CAP_PROP_FPS) * 60)
# print(stat_of_frame)
for i in range(TOTAL_MIN//SAMPLING_CYCLE):
for j in range(SAMPLING_CYCLE):
cam.set(cv2.CAP_PROP_POS_FRAMES, CAPTURE_CYCLE * (currentframe*FPS) + stat_of_frame)
ret, frame = cam.read()
if ret:
# if currentframe % capture_rate == 0:
name = 'data/frames/frame' + str(j) + '.jpg'
cv2.imwrite(name, frame)
if j == 0:
# print(PATH+date+'/'+str(i))
cv2.imwrite(PATH+date+'/'+str(i)+'.jpg', frame)
else:
break
currentframe += 1
result = Detecter.detect()
output=round(result/CAPTURE_CYCLE,2)
# print(datetime.datetime.now().strftime("%Y-%m-%d"),i,": Avg =",output)
stack.append(output)
plt.plot(range(TOTAL_MIN//SAMPLING_CYCLE),stack)
plt.savefig(target+'result.png')
mosaicer.process(PATH+date+'/')
cam.release()
cv2.destroyAllWindows()
if __name__ == '__main__':
# scheduler for server
# schedule.every(10).seconds.do(job)
#local option
job()
#run
# schedule.every().minute.do(job)
#
# while True:
# schedule.run_pending()
# time.sleep(1)