提交 b377683a authored 作者: blu's avatar blu

init

上级 3410854c
...@@ -48,7 +48,6 @@ class FrameFetcher(Thread): ...@@ -48,7 +48,6 @@ class FrameFetcher(Thread):
self.frameCnt+=1 self.frameCnt+=1
else: else:
print("error read frame") print("error read frame")
exit(1)
time.sleep(1.0 / self.fps) time.sleep(1.0 / self.fps)
print("error: cap is not opened, reconnecting...") print("error: cap is not opened, reconnecting...")
...@@ -124,7 +123,7 @@ class MotionDetector(Thread): ...@@ -124,7 +123,7 @@ class MotionDetector(Thread):
else: else:
# state transaction: 'PRE' -> 'IN' # state transaction: 'PRE' -> 'IN'
eventState = 'IN' eventState = 'IN'
evtQue.append({'type': 'start', 'ts': int(lastEventEnterTs)}) evtQue.append({'type': 'start', 'ts': int(lastEventEnterTs), 'frame':frame})
# update ts # update ts
lastEventEnterTs = start lastEventEnterTs = start
else: else:
...@@ -140,15 +139,21 @@ class MotionDetector(Thread): ...@@ -140,15 +139,21 @@ class MotionDetector(Thread):
eventState = 'POST' eventState = 'POST'
else: else:
lastEventEnterTs = start lastEventEnterTs = start
elif eventState == 'POST': elif eventState == 'POST':
if not hasEvent: if not hasEvent:
if start - lastEventEnterTs > env['EVT_END_SECS']/2: if start - lastEventEnterTs > env['EVT_END_SECS']:
# 'POST' -> 'NONE's # 'POST' -> 'NONE's
eventState = None eventState = None
# emmit event # emmit event
evtQue.append({'type': 'end', 'ts': int(lastEventEnterTs + env['EVT_END_SECS']/2)}) evtQue.append({'type': 'end', 'ts': int(lastEventEnterTs + env['EVT_END_SECS']/2)})
else:
eventState = 'IN'
lastEventEnterTs = start
except IndexError:
pass
except Exception as e: except Exception as e:
print("error: no frame: {}".format(e))
traceback.print_exc() traceback.print_exc()
finally: finally:
# fps implication # fps implication
...@@ -165,10 +170,13 @@ class EventConsumer(Thread): ...@@ -165,10 +170,13 @@ class EventConsumer(Thread):
while True: while True:
try: try:
evt = self.evtQue.popleft() evt = self.evtQue.popleft()
print("event: ", json.dumps(evt)) print('event {{type: {}, ts: {}}}'.format(evt['type'], evt['ts']))
except: if evt['type'] == 'start':
#print("no event") cv2.imwrite(('event-{}.jpg'.format(evt['ts'])), evt['frame'])
except IndexError:
pass pass
except:
traceback.print_exc()
finally: finally:
time.sleep(4) time.sleep(4)
...@@ -189,6 +197,7 @@ if __name__ == '__main__': ...@@ -189,6 +197,7 @@ if __name__ == '__main__':
env['SLICE_DURATION'] = int(os.getenv('SLICE_DURATION', 20)) env['SLICE_DURATION'] = int(os.getenv('SLICE_DURATION', 20))
env['EVT_START_SECS'] = int(os.getenv('EVT_START_SECS', 2)) env['EVT_START_SECS'] = int(os.getenv('EVT_START_SECS', 2))
env['EVT_END_SECS'] = int(os.getenv('EVT_END_SECS', 30)) env['EVT_END_SECS'] = int(os.getenv('EVT_END_SECS', 30))
env['DEMO_IMG'] = bool(os.getenv('DEMO_IMG', False))
evtQue = deque(maxlen=100) evtQue = deque(maxlen=100)
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论