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

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


回答:

普通图像被表示为具有以下形状的3D张量:(height, width, channels)。如果图像是RGB的,通道值为3;如果是灰度的,则为1。

视频是一系列N帧的集合,每一帧都是一个图像。你希望将这些数据表示为一个4D张量:(frames, height, width, channels)

例如,如果你有一分钟的视频,帧率为30,每帧是RGB且分辨率为256×256,那么你的张量看起来会像这样:(1800, 256, 256, 3),其中1800是视频中的帧数:30(帧率)* 60(秒)。

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


你可以通过OpenCV来实现这一点:

# 导入视频并将其切割成帧。
vid = cv2.VideoCapture('path/to/video/file')
frames = []
check = True
i = 0
while check:
    check, arr = vid.read()
    if not i % 20:  # 这一行是如果你想对视频进行抽样(即每20帧保留一帧)
        frames.append(arr)
    i += 1
frames = np.array(frames)  # 将帧列表转换为numpy数组

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注