Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.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_Python 3.x_Numpy_Machine Learning_Opencv3.0 - Fatal编程技术网

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

Python 如何将视频转换为numpy阵列?,python,python-3.x,numpy,machine-learning,opencv3.0,Python,Python 3.x,Numpy,Machine Learning,Opencv3.0,如何将视频转换为多个numpy阵列或单个阵列以用于机器学习。我只在图像上找到了这样做的方法。常规图像表示为具有以下形状的三维张量:(高度、宽度、通道)。如果图像为RGB,通道值为3,如果为灰度,通道值为1 视频是N帧的集合,其中每个帧是一个图像。您希望将此数据表示为4D张量:(帧、高度、宽度、通道) 例如,如果你有一分钟的视频,每秒30帧,其中每帧是RGB,分辨率为256x256,那么你的张量应该是这样的:(1800,256,256,3),其中1800是视频中的帧数:30(fps)*60(秒)

如何将视频转换为多个numpy阵列或单个阵列以用于机器学习。我只在图像上找到了这样做的方法。

常规图像表示为具有以下形状的三维张量:
(高度、宽度、通道)
。如果图像为RGB,通道值为3,如果为灰度,通道值为1

视频是N帧的集合,其中每个帧是一个图像。您希望将此数据表示为4D张量:
(帧、高度、宽度、通道)

例如,如果你有一分钟的视频,每秒30帧,其中每帧是RGB,分辨率为256x256,那么你的张量应该是这样的:
(1800,256,256,3)
,其中1800是视频中的帧数:30(fps)*60(秒)

要实现这一点,您基本上可以打开视频的每个单独帧,将它们全部存储在列表中,并沿新轴(即“帧”维度)将它们连接在一起


您可以通过OpenCV执行此操作:

#导入视频并将其剪切成帧。
vid=cv2.VideoCapture('path/to/video/file')
帧=[]
检查=正确
i=0
检查时:
检查,arr=vid.read()
如果不是,i%20:#如果您想对视频进行二次采样,请使用此行
#(即每20帧保留一帧)
帧追加(arr)
i+=1
frames=np.array(frames)#将帧列表转换为numpy数组

视频是图像的集合。这是否回答了您的问题?谢谢你的回答!先生,我怎么能用代码来写呢?@Saso-Hi,我用一个简单的代码片段编辑了答案。