使用 ffmpeg 从视频中提取移动动态作物的最快方法

问题描述 投票:0回答:1

我正在开发一个人工智能项目,涉及对大约 30 分钟的视频进行对象检测和动作识别。

我的管道如下:

  • 使用对象检测模型确定作物
  • 使用 Python 提取作物并将其作为每帧的单独图像写入磁盘。
  • 通过输入一系列作物来使用动作识别模型。

模型很快,但作物实际写入磁盘的速度很慢。当然,使用 SSD 会加快速度,但我确信 ffmpeg 会大大加快速度。

农作物面临的一些挑战:

  • 输出尺寸始终为 128x128
  • 输入大小是可变的
  • 作物在每一帧上移动

我提取作物的过程很简单,在 for 循环中使用

cv2.imwrite(output_crop_path, crop)

我已经尝试使用

sndcommand
filter_complex
进行了实验。我尝试了这个 https://stackoverflow.com/a/67508233/4447761 但它输出的图像在作物下方带有黑色,并且图像在 x 轴上缠绕。

python opencv image-processing ffmpeg video-processing
1个回答
1
投票

请勿存储图片。

仅存储边界框的序列。

然后,无论您想对堆积如山的单个图像做什么,都可以解码视频并读取盒子的序列,然后像这样即时地从中取出作物。

我建议使用 PyAV 进行视频阅读。它可靠地为您提供演示时间戳。您甚至不需要它们,但是将它们放在文件中对于调试非常有帮助。

也许您想使用

pandas
来写入和读取这样的文件。 CSV 是一种流行的格式。

© www.soinside.com 2019 - 2024. All rights reserved.