Skip to content

Commit

Permalink
Merge pull request #573 from luxonis/supervisor
Browse files Browse the repository at this point in the history
Introduce supervisor mode
  • Loading branch information
VanDavv authored Dec 14, 2021
2 parents 2c3dc48 + 1dfe7a9 commit 418fdc1
Show file tree
Hide file tree
Showing 6 changed files with 87 additions and 94 deletions.
61 changes: 36 additions & 25 deletions depthai_demo.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,23 +8,37 @@
from functools import cmp_to_key
from itertools import cycle
from pathlib import Path

import cv2
os.environ["DEPTHAI_INSTALL_SIGNAL_HANDLER"] = "0"
import depthai as dai
import platform
import numpy as np

try:
import cv2
import depthai as dai
import numpy as np
except Exception as ex:
print("Third party libraries failed to import: {}".format(ex))
print("Run \"python3 install_requirements.py\" to install dependencies or visit our installation page for more details - https://docs.luxonis.com/projects/api/en/latest/install/")
sys.exit(1)

from depthai_helpers.supervisor import Supervisor
from depthai_helpers.arg_manager import parseArgs
from depthai_helpers.config_manager import ConfigManager, DEPTHAI_ZOO, DEPTHAI_VIDEOS
from depthai_helpers.metrics import MetricManager
from depthai_helpers.version_check import checkRequirementsVersion
from depthai_sdk import FPSHandler, loadModule, getDeviceInfo, downloadYTVideo, Previews, resizeLetterbox
from depthai_sdk.managers import NNetManager, PreviewManager, PipelineManager, EncodingManager, BlobManager

print('Using depthai module from: ', dai.__file__)
print('Depthai version installed: ', dai.__version__)
args = parseArgs()

if args.noSupervisor and args.guiType == "qt":
if "QT_QPA_PLATFORM_PLUGIN_PATH" in os.environ:
os.environ.pop("QT_QPA_PLATFORM_PLUGIN_PATH")
if "QT_QPA_FONTDIR" in os.environ:
os.environ.pop("QT_QPA_FONTDIR")

if not args.noSupervisor:
print('Using depthai module from: ', dai.__file__)
print('Depthai version installed: ', dai.__version__)

if not args.skipVersionCheck and platform.machine() not in ['armv6l', 'aarch64']:
checkRequirementsVersion()

Expand Down Expand Up @@ -489,11 +503,9 @@ def prepareConfManager(in_args):


def runQt():
os.environ["QT_QUICK_BACKEND"] = "software"
from gui.main import DemoQtGui, ImageWriter
from gui.main import DemoQtGui
from PyQt5.QtWidgets import QMessageBox
from PyQt5.QtGui import QImage
from PyQt5.QtCore import QObject, pyqtSignal, pyqtSlot, QRunnable, QThreadPool
from PyQt5.QtCore import QObject, pyqtSignal, QRunnable, QThreadPool


class WorkerSignals(QObject):
Expand Down Expand Up @@ -876,18 +888,17 @@ def runOpenCv():


if __name__ == "__main__":
use_cv = args.guiType == "cv"
if not use_cv:
try:
import PyQt5
except:
if args.guiType == "qt":
raise
else:
use_cv = True
if use_cv:
args.guiType = "cv"
runOpenCv()
if args.noSupervisor:
if args.guiType == "qt":
runQt()
else:
args.guiType = "cv"
runOpenCv()
else:
args.guiType = "qt"
runQt()
s = Supervisor()
if args.guiType != "cv":
available = s.checkQtAvailability()
if args.guiType == "qt" and not available:
raise RuntimeError("QT backend is not available, run the script with --guiType \"cv\" to use OpenCV backend")
args.guiType = "qt" if available else "cv"
s.runDemo(args)
1 change: 1 addition & 0 deletions depthai_helpers/arg_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -146,4 +146,5 @@ def parseArgs():
parser.add_argument("--cameraBrightness", type=_comaSeparated("all", int), nargs="+", help="Specify image brightness")
parser.add_argument("--cameraSharpness", type=_comaSeparated("all", int), nargs="+", help="Specify image sharpness")
parser.add_argument('--skipVersionCheck', action="store_true", help="Disable libraries version check")
parser.add_argument('--noSupervisor', action="store_true", help="Disable supervisor check")
return parser.parse_args()
49 changes: 49 additions & 0 deletions depthai_helpers/supervisor.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import importlib.util
import os
import subprocess
import sys
import time
from pathlib import Path


def createNewArgs(args):
def removeArg(name, withValue=True):
if name in sys.argv:
idx = sys.argv.index(name)
if withValue:
del sys.argv[idx + 1]
del sys.argv[idx]

removeArg("-gt")
removeArg("--guiType")
removeArg("--noSupervisor")
return sys.argv[2:] + ["--noSupervisor", "--guiType", args.guiType]


class Supervisor:
def runDemo(self, args):
repo_root = Path(__file__).parent.parent
args.noSupervisor = True
new_args = createNewArgs(args)
env = os.environ.copy()

if args.guiType == "qt":
new_env = env.copy()
new_env["QT_QUICK_BACKEND"] = "software"
new_env["LD_LIBRARY_PATH"] = str(Path(importlib.util.find_spec("PyQt5").origin).parent / "Qt5/lib")
new_env["DEPTHAI_INSTALL_SIGNAL_HANDLER"] = "0"
try:
subprocess.check_call(' '.join([sys.executable, "depthai_demo.py"] + new_args), env=new_env, shell=True, cwd=repo_root)
except subprocess.CalledProcessError as ex:
print("Error while running demo script... {}".format(ex))
print("Waiting 5s for the device to be discoverable again...")
time.sleep(5)
args.guiType = "cv"
if args.guiType == "cv":
new_env = env.copy()
new_env["DEPTHAI_INSTALL_SIGNAL_HANDLER"] = "0"
new_args = createNewArgs(args)
subprocess.check_call(' '.join([sys.executable, "depthai_demo.py"] + new_args), env=new_env, shell=True, cwd=repo_root)

def checkQtAvailability(self):
return importlib.util.find_spec("PyQt5") is not None
21 changes: 0 additions & 21 deletions depthai_profiler.py

This file was deleted.

2 changes: 1 addition & 1 deletion depthai_sdk/src/depthai_sdk/previews.py
Original file line number Diff line number Diff line change
Expand Up @@ -270,7 +270,7 @@ def extractValue(self, name, frame: np.ndarray):
name (str): Name of the frame
"""
point = self.points.get(name, None)
if point is not None:
if point is not None and frame is not None:
if name in (Previews.depthRaw.name, Previews.depth.name):
self.values[name] = "{}mm".format(frame[point[1]][point[0]])
elif name in (Previews.disparityColor.name, Previews.disparity.name):
Expand Down
47 changes: 0 additions & 47 deletions depthai_supervisor.py

This file was deleted.

0 comments on commit 418fdc1

Please sign in to comment.