2017-02-10 140 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) –