diff --git a/process.py b/process.py index 4cd0f40..dcf2309 100644 --- a/process.py +++ b/process.py @@ -5,7 +5,8 @@ import os import time import numpy as np from prometheus_client import start_http_server, Counter, Gauge - +import logging +logging.basicConfig(level=logging.INFO, format='%(asctime)s [%(levelname)s] %(name)s: %(message)s') cut_count = Counter('cut_count', 'Total number of jebnięcie') machine_on = Gauge('machine_on', 'Current machine engine status') stream_on = Gauge('stream_on', 'Current camera stream status') @@ -32,7 +33,7 @@ def run(path): if not cap.isOpened(): raise Exception('VideoCapture not opened') - print('Opened') + logging.info('Stream opened') stream_on.set(1) spots = [] @@ -40,6 +41,8 @@ def run(path): turnedon = False framenum = 0 + framerate = 30 + # Read until video is completed while(cap.isOpened()): # Capture frame-by-frame @@ -50,13 +53,13 @@ def run(path): gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) blurred = cv2.GaussianBlur(gray, (5, 5), 0) - thresh = cv2.threshold(blurred, 240, 255, cv2.THRESH_BINARY)[1] + thresh = cv2.threshold(blurred, 235, 255, cv2.THRESH_BINARY)[1] cnts = cv2.findContours(thresh, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)[-2] for c in cnts: area = cv2.contourArea(c) - if area > 20 and area < 45: + if area > 30 and area < 60: # compute the center of the contour M = cv2.moments(c) cX = int(M["m10"] / M["m00"]) @@ -82,24 +85,26 @@ def run(path): cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 255, 255), 2) for spot in spots: - if spot['lastseen'] <= framenum - 50 and turnedon: + if spot['lastseen'] <= framenum - framerate and turnedon: d = dist(spots[0]['pos'], spot['pos']) - if d < 30 and d > 5: - print('PRYJEBAŁ :___DDD %.2f' % (spot['lifetime'] / 30.0,)) + l = spot['lifetime'] / framerate + print(l, d) + if d < 30 and d > 5 and l > 1.0 and l < 8.0: + logging.info('PRYJEBAŁ :___DDD %.2f' % (l,)) cut_count.inc() - if len(spots) and spots[0]['lifetime'] > 50: + if len(spots) and spots[0]['lifetime'] > framerate * 5: if not turnedon: - print('just turned on') + logging.info('just turned on') machine_on.set(1) turnedon = True else: if turnedon: - print('just turned off') + logging.info('just turned off') machine_on.set(0) turnedon = False - spots = [spot for spot in spots if spot['lastseen'] > framenum - 50] + spots = [spot for spot in spots if spot['lastseen'] > framenum - framerate] spots.sort(key=lambda v: v['lastseen'], reverse=True) framenum += 1 @@ -122,6 +127,6 @@ while True: try: run(sys.argv[1]) except Exception as exc: - print(exc) + logging.exception('Failed?') stream_on.set(0) time.sleep(5.0)