diff --git a/code/borne/backend/exemple.py b/code/borne/backend/exemple.py deleted file mode 100644 index 2cd0a2e..0000000 --- a/code/borne/backend/exemple.py +++ /dev/null @@ -1,14 +0,0 @@ -import asyncio -import json -import websockets - -# create handler for each connection -async def handler(websocket): - data = await websocket.recv() - print(data) - await websocket.send(json.dumps({"type": "effects", "effects": [{"type": "thumbs_up", "x":13, "y": 30, "width": 50, "height": 50}]})) - - -start_server = websockets.serve(handler, "localhost", 5000) -asyncio.get_event_loop().run_until_complete(start_server) -asyncio.get_event_loop().run_forever() \ No newline at end of file diff --git a/code/borne/backend/exemple_overlay_camera.py b/code/borne/backend/exemple_overlay_camera.py new file mode 100644 index 0000000..67aa4f6 --- /dev/null +++ b/code/borne/backend/exemple_overlay_camera.py @@ -0,0 +1,28 @@ +import asyncio +import json +import websockets +import numpy as np +import random + +class WebsocketServer: + def __init__(self,getEffects,port=5000,host="localhost") -> None: + self.host = host + self.port = port + self.getEffects = getEffects + + async def run(self): + async with websockets.serve(self.handler, self.host, self.port): + await asyncio.Future() + + + async def handler(self,websocket): + while True: + messages = self.getEffects() + await websocket.send(json.dumps(messages)) + +#Remplacer ça par la fonction qui récupère les effets (dans le module de reconnaissance de gestes) +def getEffects(): + return {"type": "effects", "effects": [{"type": "thumbs_up", "x":random.randint(0,100), "y": random.randint(0,100), "width": 50, "height": 50}]} + +server = WebsocketServer(getEffects) +asyncio.run(server.run()) \ No newline at end of file diff --git a/code/borne/interface/assets/js/camera_editor.js b/code/borne/interface/assets/js/camera_editor.js index 36d4e42..e1edc39 100644 --- a/code/borne/interface/assets/js/camera_editor.js +++ b/code/borne/interface/assets/js/camera_editor.js @@ -54,12 +54,15 @@ class CameraEditor { _frame() { const context = canvas.getContext("2d"); - if (this.width && this.height) { - canvas.width = this.width; - canvas.height = this.height; - context.drawImage(this.video, 0, 0, this.width, this.height); - this._drawEffects(); + if(this.streaming) { + if (this.width && this.height) { + canvas.width = this.width; + canvas.height = this.height; + context.drawImage(this.video, 0, 0, this.width, this.height); + this._drawEffects(); + } } + requestAnimationFrame(() => this._frame()); } _drawEffects() { diff --git a/code/borne/interface/assets/js/main.js b/code/borne/interface/assets/js/main.js index bb4652e..274af74 100644 --- a/code/borne/interface/assets/js/main.js +++ b/code/borne/interface/assets/js/main.js @@ -3,4 +3,4 @@ let client window.addEventListener("load", () => { cameraEditor = new CameraEditor(document.getElementById("canvas")); client = new WebsocketClient((effects) => { cameraEditor.setEffects(effects); }); -}, false); \ No newline at end of file +}, false);