This commit is contained in:
Alexander Munch-Hansen 2019-04-06 19:53:31 +02:00
commit d60f74e496
4 changed files with 28 additions and 11 deletions

View File

@ -34,18 +34,24 @@ strategies = {
@app.route("/", methods=["GET", "POST"])
def probabilities():
phone_data = request.get_json(force=True)
context = Context(**phone_data)
logger.debug("phone_data:\n%s", json.dumps(phone_data, indent=2))
logger.debug("Context: %s", context)
if request.method == "GET":
logger.warning("GET request: using default context parameters")
context = Context()
else:
phone_data = request.get_json(force=True)
logger.debug("phone_data:\n%s", json.dumps(phone_data, indent=2))
context = Context(**phone_data["data"])
#logger.debug("Context: %s", context)
predictions: List[dict] = []
for name, strategy in strategies.items():
try:
logger.debug("Executing %s..", name)
start = timeit.default_timer()
prediction = strategy(context)
stop = timeit.default_timer()
logger.debug("Execution time for %s: %ss", name, stop - start)
logger.debug("Execution time for %s: %ss", name, round(stop - start, 3 ))
except Exception as e:
logger.warning("Strategy '%s' failed:", name)
logger.exception(e)

BIN
server/nightr/gray.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 B

View File

@ -1,8 +1,6 @@
from datetime import datetime
from pathlib import Path
import requests
import cv2
import requests
from pytz import timezone
from ..util import Context, Prediction
@ -12,11 +10,10 @@ def camImgStrat(context : Context) -> Prediction:
"""
The contents of the camera image
"""
img = cv2.imread(str(Path(__file__).parent.joinpath("night.jpg")), 0)
img = context.image
average = img.mean(axis=0).mean(axis=0)
p = Prediction()
p.weight = 0.7
if average < 100:
p.probability = 1.0
p.reasons.append('Image was dark')

View File

@ -1,16 +1,30 @@
import base64
from dataclasses import dataclass, field
from pathlib import Path
from typing import List, Dict
import cv2
import numpy as np
@dataclass
class Context:
battery: float = 1.0
position: Dict[str, float] = field(default_factory=lambda: {'latitude': 53.0, 'longitude': 9.0})
image: np.ndarray = None
# App settings
in_australia: bool = False
flat_earth: bool = False
def __post_init__(self):
if self.image is None: # no image given
self.image = cv2.imread(str(Path(__file__).parent.joinpath("gray.png")))
else:
img_original = base64.b64decode(self.image)
img_as_np = np.frombuffer(img_original, dtype=np.uint8)
self.image = cv2.imdecode(img_as_np, flags=1)
@dataclass
class Prediction: