Пример #1
0
def gen(camera):
    """Video streaming generator function"""
    while True:
        global referenceFrame
        frame = camera.get_frame()

        data = np.fromstring(frame, dtype=np.uint8)
        image = cv2.imdecode(data, 1)

        if referenceFrame is None:
            _, _, referenceFrame = Detector.generateReferenceImageItem(image)
            referenceFrameDeque = Detector.generateReferenceImageDeque(
                referenceFrame, REFERENCE_FRAME_AVERAGE_FRAME_COUNT)
            referenceFrameLastUpdate = TimeService.getTimestamp()

        if TimeService.getTimestamp(
        ) > referenceFrameLastUpdate + REFERENCE_FRAME_UPDATE_INTERVAL_MS:
            _, _, referenceFrameItem = Detector.generateReferenceImageItem(
                image)
            referenceFrameDeque.append(referenceFrameItem)
            referenceFrame = Detector.generateReferenceImage(
                referenceFrameDeque)
            referenceFrameLastUpdate = TimeService.getTimestamp()

        detectedRegionRectangles, processedImage, deltaImage, thresholdImage = Detector.detect(
            MIN_HEIGHT, MIN_WIDTH, referenceFrame, image)

        if DRAW_DETECTED_REGIONS and len(detectedRegionRectangles):
            for rectangle in detectedRegionRectangles:
                ImageManipulator.drawRectangleMutable(processedImage,
                                                      rectangle)

        yield (b'--frame\r\n'
               b'Content-Type: image/jpeg\r\n\r\n' +
               cv2.imencode(".jpeg", processedImage)[1].tostring() + b'\r\n')