如何在两个单独的Docker容器(OpenCV、TensorFlow)中读取、分析和保存视频文件?

2024-03-28 19:45:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从磁盘读取一个视频文件,使用TensorFlow Object Detection API(在检测到的对象上绘制边界框)逐帧分析它,并将带有边界框的输出保存为一个新的视频文件。你知道吗

我读到通常建议您通过每个容器使用一个服务来分离关注的领域Docker docs),因此我创建了两个Docker容器,其中包含以下任务:

  1. 容器1基于python:3.7并编译了opencv4.0.1。它应该读取视频文件,将其转换为numpy数组并传递到容器2进行分析。它应该等待结果,然后将其写入视频文件。你知道吗
  2. 容器2基于tensorflow/tensorflow:1.13.1-gpu-py3并安装了对象检测API。运行时,它将模型加载到内存中。它应该从容器1接收一个numpy数组,分析它并返回它。你知道吗

容器1如何将numpy数组传递给容器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)

Tags: path对象dockernumpyapioutputtensorflow数组