server.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import uvicorn
  2. from fastapi import FastAPI, Request
  3. from logger import logger
  4. from config import Config
  5. from uploadData import upload
  6. from parser import parse_multipart
  7. from parser import parser_json_data
  8. from byteimg import byte2pil, pil2byte, draw
  9. app = FastAPI()
  10. conf = Config.get("prod")
  11. url = conf["url"]
  12. channel = conf["channel"]
  13. classIndex = conf["classIndex"]
  14. nvr = conf["nvr"]
  15. @app.post("/speed")
  16. async def speed(request: Request):
  17. multipart_data = await request.body()
  18. boundary = b'---------------------------7e13971310878'
  19. result = parse_multipart(multipart_data, boundary)
  20. car_infos, image_contents = parser_json_data(result)
  21. if len(car_infos) != 0:
  22. # with open(f"assert/{index}-tfx.txt", "wb") as f:
  23. # f.write(multipart_data)
  24. logger.info(car_infos)
  25. for info, image_content in zip(car_infos, image_contents):
  26. try:
  27. videoTime = info["dateTime"]
  28. speed = info["VehicleInfo"]["vehicleSpeed"]
  29. plate = info["PlateInfo"]["plate"]
  30. filename = None
  31. imagedata = None
  32. filename = image_content["filename"]
  33. if filename != "detectionPicture.jpg":
  34. continue
  35. imagedata = image_content["content"]
  36. if imagedata is not None:
  37. img = byte2pil(imagedata)
  38. text = f"{plate} : {speed} km/h"
  39. draw(img, text, (100, 100))
  40. byte_data = pil2byte(img)
  41. res = await upload(url, channel, classIndex, nvr, videoTime, filename, byte_data, plate, speed)
  42. logger.info(res)
  43. except Exception as error:
  44. logger.info(error)
  45. return {"msg": "sucess"}
  46. if __name__ == "__main__":
  47. uvicorn.run('server:app', host="0.0.0.0", port=18000)