feat: live
This commit is contained in:
parent
5b935e91f4
commit
224bebb81d
2
.vscode/settings.json
vendored
2
.vscode/settings.json
vendored
|
@ -11,5 +11,5 @@
|
|||
"source.organizeImports": true
|
||||
}
|
||||
},
|
||||
"jupyter.jupyterServerType": "remote"
|
||||
"jupyter.jupyterServerType": "local"
|
||||
}
|
40
src/live.py
Normal file
40
src/live.py
Normal file
|
@ -0,0 +1,40 @@
|
|||
import subprocess
|
||||
|
||||
import numpy as np
|
||||
import PIL
|
||||
import ppadb.client
|
||||
import ppadb.command.serial
|
||||
import ppadb.device
|
||||
import tensorflow
|
||||
from keras import models
|
||||
|
||||
import utils
|
||||
|
||||
RESIZED_SIZE = (100, 50, 3)
|
||||
LABELS = ['octane', 'werewolf', 'breakout', 'aftershock']
|
||||
|
||||
# Load model
|
||||
model = models.load_model('../models/model')
|
||||
|
||||
utils.startup(need_focus=False)
|
||||
|
||||
running = True
|
||||
|
||||
while running:
|
||||
utils.screenshot(filename='live', folder='../models')
|
||||
|
||||
# Lecture de l'image
|
||||
img = PIL.Image.open('../models/live')
|
||||
|
||||
# print(f"img.size = {img.size}")
|
||||
|
||||
# Redimensionnement de l'image
|
||||
img = img.resize(RESIZED_SIZE[:-1], PIL.Image.ANTIALIAS)
|
||||
|
||||
# print(f"img.size = {img.size}")
|
||||
|
||||
X = np.asarray(img)
|
||||
|
||||
Y = model.evaluate(X)
|
||||
|
||||
print(f"Model detected : {LABELS[Y]}")
|
|
@ -549,6 +549,16 @@
|
|||
"\n",
|
||||
"plot_training_analysis()\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Save the weights\n",
|
||||
"model.save('../models/model')"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
|
|
11
src/utils.py
11
src/utils.py
|
@ -118,7 +118,7 @@ def start_scrpy() -> None:
|
|||
)
|
||||
|
||||
|
||||
def startup() -> None:
|
||||
def startup(need_focus=True) -> None:
|
||||
|
||||
subprocess.call(("sudo modprobe v4l2loopback").split())
|
||||
|
||||
|
@ -127,7 +127,7 @@ def startup() -> None:
|
|||
users = detect_game(device, users)
|
||||
start_game(device, users)
|
||||
|
||||
while not (is_zen_mode(device) and is_focused(device) and is_v4l2_loaded()):
|
||||
while need_focus and not (is_zen_mode(device) and is_focused(device) and is_v4l2_loaded()):
|
||||
time.sleep(DELAY_DETECT)
|
||||
|
||||
time.sleep(DELAY_DETECT)
|
||||
|
@ -135,11 +135,12 @@ def startup() -> None:
|
|||
start_scrpy()
|
||||
|
||||
|
||||
def screenshot() -> uuid.UUID:
|
||||
filename = uuid.uuid1()
|
||||
def screenshot(filename=None, folder=DATA_FOLDER) -> uuid.UUID:
|
||||
if filename == None:
|
||||
filename = uuid.uuid1()
|
||||
|
||||
subprocess.Popen(
|
||||
f"ffmpeg -f video4linux2 -i /dev/video2 -frames:v 1 -filter:v crop=400:150:45:30 {DATA_FOLDER}/{filename}.jpg".split(),
|
||||
f"ffmpeg -f video4linux2 -i /dev/video2 -frames:v 1 -filter:v crop=400:150:45:30 {folder}/{filename}.jpg".split(),
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.STDOUT,
|
||||
)
|
||||
|
|
Loading…
Reference in a new issue