Browse Source

Upate webcam operator example to make use of opentelemetry jaeger

tags/v0.2.2-rc
haixuanTao 2 years ago
parent
commit
7be958ee66
5 changed files with 52 additions and 30 deletions
  1. +2
    -0
      .github/workflows/ci-python.yml
  2. +6
    -1
      examples/python-dataflow/webcam.py
  3. +2
    -2
      examples/python-operator-dataflow/dataflow.yml
  4. +1
    -1
      examples/python-operator-dataflow/object_detection.py
  5. +41
    -26
      examples/python-operator-dataflow/webcam.py

+ 2
- 0
.github/workflows/ci-python.yml View File

@@ -6,6 +6,8 @@ on:
paths:
- apis/python/**
- binaries/runtime/**
- examples/python-dataflow/**
- examples/python-operator-dataflow/**
pull_request:
workflow_dispatch:



+ 6
- 1
examples/python-dataflow/webcam.py View File

@@ -4,6 +4,7 @@
import time

import cv2

from dora import Node

node = Node()
@@ -20,7 +21,11 @@ while time.time() - start < 10:
case "INPUT":
ret, frame = video_capture.read()
if ret:
node.send_output("image", cv2.imencode(".jpg", frame)[1].tobytes())
node.send_output(
"image",
cv2.imencode(".jpg", frame)[1].tobytes(),
event["metadata"],
)
case "STOP":
print("received stop")
break


+ 2
- 2
examples/python-operator-dataflow/dataflow.yml View File

@@ -4,8 +4,8 @@ communication:

nodes:
- id: webcam
custom:
source: webcam.py
operator:
python: webcam.py
inputs:
tick: dora/timer/millis/100
outputs:


+ 1
- 1
examples/python-operator-dataflow/object_detection.py View File

@@ -8,7 +8,7 @@ import numpy as np
import torch

from dora import DoraStatus

class Operator:
"""


+ 41
- 26
examples/python-operator-dataflow/webcam.py View File

@@ -1,31 +1,46 @@
#!/usr/bin/env python
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import time
from typing import Callable

import cv2
from dora import Node

node = Node()

video_capture = cv2.VideoCapture(0)

start = time.time()

# Run for 20 seconds
while time.time() - start < 10:
# Wait next dora_input
event = node.next()
match event["type"]:
case "INPUT":
ret, frame = video_capture.read()
if ret:
node.send_output("image", cv2.imencode(".jpg", frame)[1].tobytes())
case "STOP":
print("received stop")
break
case other:
print("received unexpected event:", other)
break

video_capture.release()

from dora import DoraStatus


class Operator:
"""
Sending image from webcam to the dataflow
"""

def __init__(self):
self.video_capture = cv2.VideoCapture(0)
self.start_time = time.time()

def on_event(
self,
dora_event: dict,
send_output: Callable[[str, bytes], None],
) -> DoraStatus:
match dora_event["type"]:
case "INPUT":
ret, frame = self.video_capture.read()
if ret:
send_output(
"image",
cv2.imencode(".jpg", frame)[1].tobytes(),
dora_event["metadata"],
)
case "STOP":
print("received stop")
case other:
print("received unexpected event:", other)

if time.time() - self.start_time < 20:
return DoraStatus.CONTINUE
else:
return DoraStatus.STOP

def __del__(self):
self.video_capture.release()

Loading…
Cancel
Save