关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。
想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。
7 个月前关闭。
Improve this question
如何将视频转换为多个 numpy 数组或单个数组以将其用于机器学习。我只找到了在图像上执行此操作的方法。
最佳答案
常规图像表示为具有以下形状的 3D 张量:(height, width, channels)
.如果图像是 RGB,则 channel 值为 3,如果是灰度,则 channel 值为 1。
视频是 N 帧的集合,其中每一帧是一个图像。您想将此数据表示为 4D 张量:(frames, height, width, channels)
.
因此,例如,如果您有 1 分钟的 30 fps 视频,其中每帧为 RGB,分辨率为 256x256,那么您的张量将如下所示:(1800, 256, 256, 3)
,其中 1800 是视频中的帧数:30 (fps) * 60 (秒)。
为此,您基本上可以打开视频的每个单独帧,将它们全部存储在一个列表中,然后沿着新轴(即“帧”维度)将它们连接在一起。
你可以通过 OpenCV 做到这一点:
# Import the video and cut it into frames.
vid = cv2.VideoCapture('path/to/video/file')
frames = []
check = True
i = 0
while check:
check, arr = vid.read()
if not i % 20: # This line is if you want to subsample your video
# (i.e. keep one frame every 20)
frames.append(arr)
i += 1
frames = np.array(frames) # convert list of frames to numpy array
关于python - 如何将视频转换为 numpy 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67644826/