2017-02-10 144 views
2

我有一个python脚本与我想要转换为numpy数组的视频在同一个文件夹中。我的视频被称为'test.mp4'。如何将视频转换为numpy数组?

在我的脚本中,我想打电话给someFunction('test.mp4')并找回一个numpy数组。由此产生的numpy数组应该是一个numpy图像数组,其中每个图像都是一个3维numpy数组。

这有道理吗?

谢谢!

+0

的可能的复制[?如何阅读mp4视频由scikit图像处理(http://stackoverflow.com/questions/29718238/how-to -read-mp4-video-to---processing-by-scikit-image) – JulienD

回答

3

下面的脚本做你想要的。你可以将它的一部分分解成函数。

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

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

import skvideo.io 
videodata = skvideo.io.vread("video_file_name") 
print(videodata.shape) 

有关详细信息: https://wingateacademy.blogspot.in/2018/01/scikit-video-skvideo-tutorial.html

+0

如何将它变成numpy数组? –

+0

videodata仅限numpy格式。 否则, import numpy as np - > temp = np.array(videodata) –