Skip to content

Commit f0067d0

Browse files
Merge pull request #14 from 5sControl/dev
Dev
2 parents 5d948e6 + 11406e6 commit f0067d0

File tree

5 files changed

+24
-23
lines changed

5 files changed

+24
-23
lines changed

IdleAlgorithm.py

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from confs import configs
55
import utils
66
import numpy as np
7+
import time
78

89

910
class IdleAlgorithm:
@@ -18,21 +19,24 @@ def __init__(
1819
self._image_extractor = image_extractor
1920
self._model_predictor = model_predictor
2021
self._reporter = reporter
22+
self._min_epoch_time = 2 # replace on config in future
2123

22-
async def run(self):
23-
iter_idx = 0
24+
async def start(self) -> None:
2425
while True:
25-
iter_idx += 1
26-
if iter_idx % 60 == 0:
27-
self._logger.info("60 iterations passed")
26+
start_epoch_time = time.time()
27+
self._run_one_idle_epoch()
28+
end_epoch_time = time.time()
29+
passed_time = end_epoch_time - start_epoch_time
30+
if passed_time < self._min_epoch_time:
31+
await asyncio.sleep(self._min_epoch_time - passed_time)
32+
33+
def _run_one_idle_epoch(self) -> None:
2834
img, start_tracking = self._image_extractor.get_snapshot()
2935
if img is None:
30-
asyncio.sleep(1)
31-
continue
36+
return
3237
preds = self._model_predictor.predict(img)
3338
if preds is None:
34-
asyncio.sleep(1)
35-
continue
39+
return
3640
if preds.size != 0 and not np.any(preds == 1.):
3741
self._logger.info("Telephone is detected")
3842
if utils.bboxes_not_equal(prev_preds, preds, configs["threshold"]):
@@ -42,4 +46,3 @@ async def run(self):
4246
else:
4347
self._logger.debug("Equal bboxes")
4448
prev_preds = preds
45-
asyncio.sleep(2)

confs/settings.env

Lines changed: 0 additions & 5 deletions
This file was deleted.

connection/ImageHTTPExtractor.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ def get_snapshot(self) -> Tuple[Union[cv2.Mat, None], Union[datetime.time, None]
2727
img = cv2.imdecode(nparr, cv2.IMREAD_COLOR)
2828
return img, curr_time
2929
except Exception as exc:
30-
self.logger.error(f"Cannot retrieve image. Following error raised - {exc}")
30+
self.logger.warning(f"Cannot retrieve image. Following error raised - {exc}")
31+
print(images.keys())
3132
return None, None
3233

3334
@sio.event
@@ -36,9 +37,9 @@ async def connect():
3637

3738
@sio.event
3839
async def snapshot_updated(data):
39-
camera_url, screen = data.get("camera_ip"), data.get("screenshot")
40+
camera_ip, screen = data.get("camera_ip"), data.get("screenshot")
4041
global images
41-
images[camera_url] = screen
42+
images[camera_ip] = screen
4243

4344
async def run_sio(url):
4445
await sio.connect(url)

main.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import utils
2-
import connection
2+
from connection import run_sio, IdleReporter, ImageHTTPExtractor, ModelPredictionsReceiver
33
from confs import configs
44
from dotenv import load_dotenv
55
from IdleAlgorithm import IdleAlgorithm
@@ -20,13 +20,13 @@
2020
logger = utils.create_logger()
2121

2222
prev_preds = np.array([[]]).astype(np.float32)
23-
reporter = connection.IdleReporter(folder, server_url, configs["wait_time"], logger)
24-
image_extractor = connection.ImageHTTPExtractor(camera_ip, logger, username=username, password=password)
25-
model_predictor = connection.ModelPredictionsReceiver(server_url, logger)
23+
reporter = IdleReporter(folder, server_url, configs["wait_time"], logger)
24+
image_extractor = ImageHTTPExtractor(camera_ip, logger, username=username, password=password)
25+
model_predictor = ModelPredictionsReceiver(server_url, logger)
2626
algo = IdleAlgorithm(logger, image_extractor, model_predictor, reporter)
2727

2828
async def main():
29-
await asyncio.gather(connection.run_sio(server_url + ':3456'), algo.run())
29+
await asyncio.gather(run_sio(server_url + ':3456'), algo.start())
3030

3131
loop = asyncio.get_event_loop()
3232
try:

requirements.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,5 @@ python-dotenv==1.0.0
99
PyYAML==6.0
1010
requests==2.27.1
1111
numba==0.57.1
12+
python-socketio==5.8.0
13+
aiohttp==3.8.1

0 commit comments

Comments
 (0)