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

时间:2017-02-10 15:31:46

标签: python arrays numpy video

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

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

这有意义吗?

谢谢!

2 个答案:

答案 0 :(得分:10)

下面的脚本可以满足您的需求。您可以将其中的一部分分成函数。

以下代码不会检查错误,特别是生产代码会检查每个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)

答案 1 :(得分:7)

skvideo是一个python包,可以用来读取视频和存储到多维数组中。

var order = ["order_id", "product_id", "product_after_price"];
var x = [{
    order_id: 10,
    product_id: 5,
    product_after_price: 50
  },
  {
    order_id: 10,
    product_id: 6,
    product_after_price: 50
  }
];
var output = x.map(function(item) {
  return order.reduce(function(a, c) {
    a.push( item[c] );
    return a;
  }, []);
});

console.log(output);

了解更多详情: http://mllearners.blogspot.in/2018/01/scikit-video-skvideo-tutorial-for.html