53 lines
1.3 KiB
Python

import atexit
import jetson.utils
from flask import Flask
from apscheduler.schedulers.background import BackgroundScheduler
from multiprocessing import Manager
from model import detect
app = Flask(__name__)
scheduler = BackgroundScheduler(daemon=True)
manager = Manager()
pred = manager.dict()
@scheduler.task('interval', id='get_pred', minutes=30, misfire_grace_time=900)
def get_pred():
img = take_image('./current_image.jpg')
print('Job 1 executed')
def take_image(img_path: str):
"""Take an image with the webcam and save it to the specified
path.
:param str img_path: path image should be saved to
:returns: captured image
"""
input = jetson.utils.videoSource('csi://0')
output = jetson.utils.videoOutput(img_path)
img = input.Capture()
output.Render(img)
return img
@app.route('/')
def index():
# TODO: call script and save initial image with bounding boxes
# TODO: get predictions and output them in JSON via API
# TODO: periodically get image from webcam and go to beginning
# TODO: JSON format: [Nr, state (1-10), timestamp, time since below 3]
return 'Server works'
if __name__ == '__main__':
scheduler.add_job(func=get_pred, trigger='interval', minutes=30)
scheduler.start()
atexit.register(scheduler.shutdown())
app.run()