视频训练数预处理

        往期的博客我们简单的讲了什么是视频数据、会用什么方式加载视频数据并介绍了加载视频数据会用到的工具,这期博客我们开始实际的对视频数据做处理,文章内容:获取视频的信息、加载视频数据做处理、保存视频数据。

获取视频帧数与帧率

        上期博客中讲了图像分辨率和帧率的重要性,也是说明对一些高帧率视频需要做降采样,我们接下来就举个例子说明一下。假设我们有一部视频时长为1小时的影片,我们可以通过属性去观看数据的信息,但这对大规模数据来说并不是一个好的方法,那么我们使用opencv来实现这个功能。

import cv2


if __name__ == "__main__":
    video_path = "视频路径"
    cap = cv2.VideoCapture(video_path)
    # 视频总的帧数
    frame_num = cap.get(7)
    # 图片帧率
    fps = cap.get(5)

    while True:
         ret, frame = cap.read()
         print(f"视频帧率{fps} 视频总帧数{frame_num } 视频分辨率{frame.shape}")

        通过上面的代码我们就可以获取到视频的帧率、帧数、分辨率。其中的帧率、帧数和影片时长是相关的,相关计算公式如下:视频时长 = 视频帧数 / 视频帧率。如果我们的影片帧率较高,假设有60fps,但我们只想要采样20fps,这时候就需要对数据做处理了,相关计算公式如下:跳帧数 = 当前视频帧率 / 目标视频帧率 = 60 / 20 = 3(每间隔三张图片数据做一次采样)

加载视频数据并保存成npy格式

        我们在上面列举了目标采样率的计算方式,接下来我们把它应用上,将数据转换成npy格式进行存储(npy格式加载速度更快)。

import cv2
import numpy as np


if __name__ == "__main__":
    video_path = "视频路径"
    cap = cv2.VideoCapture(video_path)
    # 获取帧率
    fps = int(cap.get(5))
    frame_lists = []
    while True:
        ret, frame = cap.read()
        if not(ret):
            break
        # 对图片数据做缩小,缩小为224*224
        frame = cv2.resize(frame, (224, 224))
        # 将三维数据转换为一维
        frame_array = frame.reshape(-1)
        frame_lists.append(frame_array)
    # 根据视频帧率和目标帧率计算采样周期
    interval = int(fps / 20)
    frame_lists = np.array(frame_lists)[::interval]
    # 保存数据
    np.save("npy文件保存地址", frame_lists)

结尾

        感谢您的观看,觉得写的还可以请帮忙点个赞和收藏!

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了将视频分类,可以使用 MATLAB 进行预处理。下面是一些预处理步骤: 1. 读取视频文件:首先,使用 MATLAB 中的 VideoReader 函读取视频文件。该函可读取大多视频格式,包括 .mp4、.avi、.mov 等。 2. 视频分解为帧:使用 readFrame 函视频分解为单个帧。该函视频中读取下一个连续帧。我们可以使用 while 循环来循环读取视频的所有帧。 3. 图像增强:可以对每个帧进行图像增强,以提高视频质量。例如,使用 imresize 函调整图像大小,以使其具有一致的尺寸。还可以使用 imadjust 函调整图像的对比度和亮度。 4. 特征提取:对每个帧提取特征。这些特征可以是颜色直方图、纹理特征等。特征提取可以使用 MATLAB 的 Image Processing Toolbox 实现,例如 hsvhist、graycomatrix 等。 5. 特征标准化:标准化提取的特征,以便它们具有相似的值范围。 6. 据准备:将每个帧的特征存储为一个向量,并将所有帧的向量组成一个据集。可以使用据集拆分函据集分成训练集和测试集。 7. 训练分类模型:使用分类算法(如 SVM、KNN、神经网络等)训练分类模型。训练模型的代码取决于选定的分类算法。 8. 测试分类模型:用测试据集测试分类模型的性能。可以使用 MATLAB 的分类性能函(如 confusionmat、classificationAccuracy 等)来评估模型。 9. 应用分类模型:使用分类模型对新视频进行分类。首先,将视频分解为单个帧,然后对每个帧提取特征。最后,使用训练好的分类模型将每个帧分类为其所属的类别。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值