Как читать, анализировать и сохранять видеофайл в двух отдельных контейнерах Docker (OpenCV, TensorFlow)? - PullRequest
1 голос
/ 15 апреля 2019

Я хочу прочитать видеофайл с диска, проанализировать его покадрово, используя TensorFlow Object Detection API (нарисовать ограничивающие прямоугольники на обнаруженных объектах) и сохранить вывод с ограничивающими прямоугольниками как новое видеофайл.

Я прочитал, что , как правило, рекомендуется разделять проблемные области, используя одну службу на контейнер ( Docker docs ), поэтому я создал два Dockerконтейнеры со следующими задачами:

  1. Контейнер 1 основан на python:3.7 и имеет скомпилированную OpenCV 4.0.1.Предполагается прочитать видеофайл, преобразовать его в пустой массив и передать в контейнер 2 для анализа.Он должен дождаться результата и затем записать его в видеофайл.
  2. Контейнер 2 основан на tensorflow/tensorflow:1.13.1-gpu-py3 и имеет установленный API обнаружения объектов.При запуске модель загружается в память.Он должен получить массив пустых данных из контейнера 1, проанализировать его и вернуть.

Как Контейнер 1 может передать массив пустых данных в контейнер 2, дождаться результата анализа, записать его в файл и захватитьдругой кадр и т. д .?

Примечание. Я знаю, как это сделать, используя один контейнер с TensorFlow и OpenCV, но, похоже, это не «путь Docker» ...

cap = cv2.VideoCapture('/path/to/video.mp4')
output = cv2.VideoWriter('path/to/output.mp4', cv2.VideoWriter_fourcc('H', '2', '6', '4'), frame_rate, (frame_width, frame_height))

def analyze(frame):
    # TensorFlow doing its magic here...
    return frame

while True:
    ret, frame = cap.read()
      if ret:
          frame_bboxes = analyze(frame)
          output.write(frame_bboxes)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...