Compare commits
No commits in common. "552f69e46e38b1276915ac4d7b7dd6d49a219d14" and "d4f8a1257750a117184b7642fb7007b273afe0d6" have entirely different histories.
552f69e46e
...
d4f8a12577
@ -35,8 +35,6 @@ RUN poetry build
|
|||||||
#################
|
#################
|
||||||
FROM base
|
FROM base
|
||||||
|
|
||||||
COPY camera_tunning /camera_tuning
|
|
||||||
|
|
||||||
RUN mkdir /models
|
RUN mkdir /models
|
||||||
COPY --from=model-builder /models/mobile_object_localizer_192x192_openvino_2021.4_6shave.blob /models/mobile_object_localizer_192x192_openvino_2021.4_6shave.blob
|
COPY --from=model-builder /models/mobile_object_localizer_192x192_openvino_2021.4_6shave.blob /models/mobile_object_localizer_192x192_openvino_2021.4_6shave.blob
|
||||||
|
|
||||||
|
@ -12,10 +12,6 @@ import paho.mqtt.client as mqtt
|
|||||||
|
|
||||||
from camera import oak_pipeline as cam
|
from camera import oak_pipeline as cam
|
||||||
|
|
||||||
CAMERA_EXPOSITION_DEFAULT = "default"
|
|
||||||
CAMERA_EXPOSITION_8300US = "8300us"
|
|
||||||
CAMERA_EXPOSITION_500US = "500us"
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
_DEFAULT_CLIENT_ID = "robocar-depthai"
|
_DEFAULT_CLIENT_ID = "robocar-depthai"
|
||||||
@ -53,10 +49,6 @@ def _parse_args_cli() -> argparse.Namespace:
|
|||||||
help="set rate at which camera should produce frames",
|
help="set rate at which camera should produce frames",
|
||||||
type=int,
|
type=int,
|
||||||
default=30)
|
default=30)
|
||||||
parser.add_argument("--camera-tuning-exposition", type=str,
|
|
||||||
default=CAMERA_EXPOSITION_DEFAULT,
|
|
||||||
help="override camera exposition configuration",
|
|
||||||
choices=[CAMERA_EXPOSITION_DEFAULT, CAMERA_EXPOSITION_500US, CAMERA_EXPOSITION_8300US])
|
|
||||||
parser.add_argument("-H", "--image-height", help="image height",
|
parser.add_argument("-H", "--image-height", help="image height",
|
||||||
type=int,
|
type=int,
|
||||||
default=_get_env_int_value("IMAGE_HEIGHT", 120))
|
default=_get_env_int_value("IMAGE_HEIGHT", 120))
|
||||||
@ -106,12 +98,6 @@ def execute_from_command_line() -> None:
|
|||||||
objects_threshold=args.objects_threshold)
|
objects_threshold=args.objects_threshold)
|
||||||
|
|
||||||
pipeline = dai.Pipeline()
|
pipeline = dai.Pipeline()
|
||||||
if args.camera_tuning_exposition == CAMERA_EXPOSITION_500US:
|
|
||||||
pipeline.setCameraTuningBlobPath('/camera_tuning/tuning_exp_limit_500us.bin')
|
|
||||||
elif args.camera_tuning_exposition == CAMERA_EXPOSITION_8300US:
|
|
||||||
pipeline.setCameraTuningBlobPath('/camera_tuning/tuning_exp_limit_8300us.bin')
|
|
||||||
|
|
||||||
|
|
||||||
pipeline_controller = cam.PipelineController(pipeline=pipeline,
|
pipeline_controller = cam.PipelineController(pipeline=pipeline,
|
||||||
frame_processor=frame_processor,
|
frame_processor=frame_processor,
|
||||||
object_processor=object_processor,
|
object_processor=object_processor,
|
||||||
|
@ -5,7 +5,6 @@ import abc
|
|||||||
import datetime
|
import datetime
|
||||||
import logging
|
import logging
|
||||||
import pathlib
|
import pathlib
|
||||||
import time
|
|
||||||
import typing
|
import typing
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
|
|
||||||
@ -23,9 +22,6 @@ _NN_PATH = "/models/mobile_object_localizer_192x192_openvino_2021.4_6shave.blob"
|
|||||||
_NN_WIDTH = 192
|
_NN_WIDTH = 192
|
||||||
_NN_HEIGHT = 192
|
_NN_HEIGHT = 192
|
||||||
|
|
||||||
_PREVIEW_WIDTH = 640
|
|
||||||
_PREVIEW_HEIGHT = 480
|
|
||||||
|
|
||||||
|
|
||||||
class ObjectProcessor:
|
class ObjectProcessor:
|
||||||
"""
|
"""
|
||||||
@ -207,15 +203,13 @@ class CameraSource(Source):
|
|||||||
|
|
||||||
# Properties
|
# Properties
|
||||||
self._cam_rgb.setBoardSocket(dai.CameraBoardSocket.RGB)
|
self._cam_rgb.setBoardSocket(dai.CameraBoardSocket.RGB)
|
||||||
self._cam_rgb.setPreviewSize(width=_PREVIEW_WIDTH, height=_PREVIEW_HEIGHT)
|
self._cam_rgb.setPreviewSize(width=img_width, height=img_height)
|
||||||
self._cam_rgb.setInterleaved(False)
|
self._cam_rgb.setInterleaved(False)
|
||||||
self._cam_rgb.setColorOrder(dai.ColorCameraProperties.ColorOrder.RGB)
|
self._cam_rgb.setColorOrder(dai.ColorCameraProperties.ColorOrder.RGB)
|
||||||
self._cam_rgb.setFps(fps)
|
self._cam_rgb.setFps(fps)
|
||||||
self._resize_manip = self._configure_manip(pipeline=pipeline, img_width=img_width, img_height=img_height)
|
|
||||||
|
|
||||||
# link camera preview to output
|
# link camera preview to output
|
||||||
self._cam_rgb.preview.link(self._resize_manip.inputImage)
|
self._cam_rgb.preview.link(self._xout_rgb.input)
|
||||||
self._resize_manip.out.link(self._xout_rgb.input)
|
|
||||||
|
|
||||||
def link(self, input_node: dai.Node.Input) -> None:
|
def link(self, input_node: dai.Node.Input) -> None:
|
||||||
self._cam_rgb.preview.link(input_node)
|
self._cam_rgb.preview.link(input_node)
|
||||||
@ -223,15 +217,6 @@ class CameraSource(Source):
|
|||||||
def get_stream_name(self) -> str:
|
def get_stream_name(self) -> str:
|
||||||
return self._xout_rgb.getStreamName()
|
return self._xout_rgb.getStreamName()
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def _configure_manip(pipeline: dai.Pipeline, img_width: int, img_height: int) -> dai.node.ImageManip:
|
|
||||||
# Resize image
|
|
||||||
manip = pipeline.createImageManip()
|
|
||||||
manip.initialConfig.setResize(img_width, img_height)
|
|
||||||
manip.initialConfig.setFrameType(dai.ImgFrame.Type.RGB888p)
|
|
||||||
manip.initialConfig.setKeepAspectRatio(False)
|
|
||||||
return manip
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class MqttConfig:
|
class MqttConfig:
|
||||||
@ -345,10 +330,6 @@ class PipelineController:
|
|||||||
q_nn = dev.getOutputQueue(name=self._object_node.get_stream_name(), maxSize=queue_size, # type: ignore
|
q_nn = dev.getOutputQueue(name=self._object_node.get_stream_name(), maxSize=queue_size, # type: ignore
|
||||||
blocking=False)
|
blocking=False)
|
||||||
|
|
||||||
start_time = time.time()
|
|
||||||
counter = 0
|
|
||||||
fps = 0
|
|
||||||
display_time = time.time()
|
|
||||||
self._stop = False
|
self._stop = False
|
||||||
while True:
|
while True:
|
||||||
if self._stop:
|
if self._stop:
|
||||||
@ -360,16 +341,6 @@ class PipelineController:
|
|||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
logger.exception("unexpected error: %s", str(ex))
|
logger.exception("unexpected error: %s", str(ex))
|
||||||
|
|
||||||
counter += 1
|
|
||||||
if (time.time() - start_time) > 1:
|
|
||||||
fps = counter / (time.time() - start_time)
|
|
||||||
counter = 0
|
|
||||||
start_time = time.time()
|
|
||||||
if (time.time() - display_time) >= 10:
|
|
||||||
display_time = time.time()
|
|
||||||
logger.info("fps: %s", fps)
|
|
||||||
|
|
||||||
|
|
||||||
def _loop_on_camera_events(self, q_nn: dai.DataOutputQueue, q_rgb: dai.DataOutputQueue) -> None:
|
def _loop_on_camera_events(self, q_nn: dai.DataOutputQueue, q_rgb: dai.DataOutputQueue) -> None:
|
||||||
logger.debug("wait for new frame")
|
logger.debug("wait for new frame")
|
||||||
|
|
||||||
@ -390,7 +361,6 @@ class PipelineController:
|
|||||||
self._object_processor.process(in_nn, frame_ref)
|
self._object_processor.process(in_nn, frame_ref)
|
||||||
logger.debug("objects processed")
|
logger.debug("objects processed")
|
||||||
|
|
||||||
|
|
||||||
def stop(self) -> None:
|
def stop(self) -> None:
|
||||||
"""
|
"""
|
||||||
Stop event loop, if loop is not running, do nothing
|
Stop event loop, if loop is not running, do nothing
|
||||||
|
Binary file not shown.
Binary file not shown.
1251
poetry.lock
generated
1251
poetry.lock
generated
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user