Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将视频转换为numpy阵列?_Python_Arrays_Numpy_Video - Fatal编程技术网

Python 如何将视频转换为numpy阵列?

Python 如何将视频转换为numpy阵列?,python,arrays,numpy,video,Python,Arrays,Numpy,Video,我有一个python脚本,和我想转换成numpy数组的视频在同一个文件夹中。我的视频叫做“test.mp4” 在我的脚本中,我想调用someFunction('test.mp4')并返回一个numpy数组。生成的numpy数组应该是图像的numpy数组,其中每个图像都是一个三维numpy数组 这有意义吗 谢谢 下面的脚本满足您的要求。您可以将它的一部分分离到函数中 下面的代码不检查错误,特别是,生产代码将检查每个帧*变量是否大于零 import cv2 import numpy as np c

我有一个python脚本,和我想转换成numpy数组的视频在同一个文件夹中。我的视频叫做“test.mp4”

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

这有意义吗


谢谢

下面的脚本满足您的要求。您可以将它的一部分分离到函数中

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

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)
导入cv2
将numpy作为np导入
cap=cv2.VideoCapture('test.mp4'))
frameCount=int(cap.get(cv2.cap\u PROP\u FRAME\u COUNT))
frameWidth=int(cap.get(cv2.cap\u PROP\u FRAME\u WIDTH))
frameHeight=int(cap.get(cv2.cap\u PROP\u FRAME\u HEIGHT))
buf=np.empty((frameCount,frameHeight,frameWidth,3),np.dtype('uint8'))
fc=0
ret=真
而(fc<帧数和ret):
ret,buf[fc]=上限读取()
fc+=1
第1章释放()
cv2.namedWindow('frame 10')
cv2.imshow(“第10帧”,buf[9])
cv2.等待键(0)

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

import skvideo.io  
videodata = skvideo.io.vread("video_file_name")  
print(videodata.shape)
有关详细信息:

如何将其转换为numpy阵列可能存在重复?视频数据仅为numpy格式。否则,导入NUMPY作为NP->TEMP= NP.数组(视频数据),这比使用CV2NoSE更干净、更简单,您也可以考虑处理流,因为在内存中保存整个未压缩的视频可以很快地将您从物理内存中释放出来。