in agora/contoso_motors/src/decode-svc/main.py [0:0]
def generate():
# grab global references to the output frame and lock variables
global outputFrame, lock
# loop over frames from the output stream
while True:
with lock:
# check if the output frame is available, otherwise skip
# the iteration of the loop
if outputFrame is None:
continue
results = model(outputFrame, stream=True)
contains_class = False
# coordinates
for r in results:
boxes = r.boxes
for box in boxes:
# bounding box
x1, y1, x2, y2 = box.xyxy[0]
x1, y1, x2, y2 = int(x1), int(y1), int(x2), int(y2) # convert to int values
# put box in cam
cv2.rectangle(outputFrame, (x1, y1), (x2, y2), (139, 163, 255), 2)
# confidence
confidence = math.ceil((box.conf[0]*100))/100
# class name
cls = int(box.cls[0])
if(confidence > 0.6 and classNames[cls] == "handbag"):
contains_class = True
# object detailscla
org = [x1, y1]
font = cv2.FONT_HERSHEY_SIMPLEX
fontScale = 1
color = (255, 0, 0)
thickness = 2
cv2.putText(outputFrame, classNames[cls], org, font, fontScale, color, thickness)
# encode the frame in JPEG format
(flag, encodedImage) = cv2.imencode(".jpg", outputFrame)
if contains_class:
store_jpg_frame(encodedImage)
print(encodedImage)
# ensure the frame was successfully encoded
if not flag:
continue
# yield the output frame in the byte format
yield(b'--frame\r\n' b'Content-Type: image/jpeg\r\n\r\n' +
bytearray(encodedImage) + b'\r\n')