如何将视频转换为numpy数组?

4
如何将视频转换为多个 numpy 数组或单个数组,以便用于机器学习。只能找到处理图像的方法。

视频是图像的集合。 - programandoconro
2
这个回答解决了你的问题吗?如何将视频转换为numpy数组? - Nathan Mills
1个回答

1
一张普通的图片被表示为一个三维张量,其形状如下:(高度, 宽度, 通道数)。如果图片是RGB格式,则通道值为3,如果是灰度图像,则为1。
视频是由N帧组成的,其中每一帧都是一张图片。您需要将这些数据表示为四维张量:(帧数, 高度, 宽度, 通道数)
例如,如果您有一分钟的视频,帧率为30fps,每个帧都是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

谢谢您的回答!但是先生,我该如何用代码来写呢? - Saso
@Saso 你好,我已经用一个简单的代码片段编辑了答案。 - Djib2011

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接