如何将视频转换为 numpy 数组?

新手上路,请多包涵

我在与要转换为 numpy 数组的视频相同的文件夹中有一个 python 脚本。我的视频名为“test.mp4”。

在我的脚本中,我想调用 someFunction('test.mp4') 并取回一个 numpy 数组。生成的 numpy 数组应该是一个 numpy 图像数组,其中每个图像都是一个 3-d numpy 数组。

那有意义吗?

谢谢!

原文由 anon_swe 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 931
2 个回答

下面的脚本做你想要的。您可以将它的一部分分离到函数中。

下面的代码不检查错误,特别是,生产代码将检查每个 frame* 变量是否大于零。

 import cv2
import numpy as np

cap = cv2.VideoCapture('test.mp4')
frameCount = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
frameWidth = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
frameHeight = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))

buf = np.empty((frameCount, frameHeight, frameWidth, 3), np.dtype('uint8'))

fc = 0
ret = True

while (fc < frameCount  and ret):
    ret, buf[fc] = cap.read()
    fc += 1

cap.release()

cv2.namedWindow('frame 10')
cv2.imshow('frame 10', buf[9])

cv2.waitKey(0)

原文由 ivan_onys 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题