from flask import request, jsonify from pyplatex import ANPR # type: ignore from ultralytics.nn.tasks import DetectionModel # type: ignore import os import torch import asyncio from application import app, db from models import LoggedItem, AllowedPlate from datetime import datetime torch.serialization.add_safe_globals( # type: ignore {"DetectionModel": DetectionModel} # type: ignore ) # Saving images locally UPLOAD_FOLDER = "uploads" os.makedirs(UPLOAD_FOLDER, exist_ok=True) # Default app route @app.route("/") def home(): return "Hello, World!" i = 0 # API to process vehicle @app.route("/api", methods=["POST"]) def data(): data = request.data global i with open(f"image{i}.jpg", "wb") as f: f.write(data) status = asyncio.run(process_image(f"image{i}.jpg")) i += 1 return jsonify( { "message": "Image sent succesfully", "status": status, } ) async def process_image(file: str) -> bool: anpr = ANPR() anpr_info: ... = await anpr.detect(file) # type: ignore number_plate = anpr_info["plate_number"] if number_plate: allowed = ( AllowedPlate.query.filter_by(plate=number_plate).first() is not None ) db.session.add( LoggedItem( plate=number_plate, allowed=allowed, datetime=datetime.now() ) ) db.session.commit() return allowed return False if __name__ == "__main__": app.run(host="192.168.137.1", port=2222, debug=True)