Pytorch – 使用opencv-python解码视频文件并将视频帧转换为Pytorch tensor作为网络模型输入数据
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:Pytorch – 使用opencv-python解码视频文件并将视频帧转换为Pytorch tensor作为网络模型输入数据
原文链接:https://www.stubbornhuang.com/1281/
发布于:2021年04月19日 14:42:47
修改于:2021年04月25日 16:44:00
[toc]
1 视频文件作为网络模型的输入数据
越来越多的神经网络模型开始以视频作为训练数据,比如基于视频数据的行为识别等等,这就需要我们将视频转换为可适用的张量,本文将以pytorch为例,展示一下视频数据转换为pytorch tensor的过程。
2 使用OpenCV-Python解码视频文件并将视频帧转换为Pytorch tensor
2.1 安装opencv-python
不赘述。
2.2 视频转换为tensor
import torch
import numpy as np
import os
def get_tensor_from_video(video_path):
"""
:param video_path: 视频文件地址
:return: pytorch tensor
"""
if not os.access(video_path, os.F_OK):
print('测试文件不存在')
return
import cv2
cap = cv2.VideoCapture(video_path)
frames_list = []
while(cap.isOpened()):
ret,frame = cap.read()
if not ret:
break
else:
# 注意,opencv默认读取的为BGR通道组成模式,需要转换为RGB通道模式
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
frames_list.append(frame)
cap.release()
# 转换成tensor
result_frames = torch.as_tensor(np.stack(frames_list))
# 注意:此时result_frames组成的维度为[视频帧数量,宽,高,通道数]
return result_frames
if __name__ == '__main__':
tensor = get_tensor_from_video(r'H:\Temp\P01_01_00_0_color(488x488).avi')
print(tensor.shape)
详细的代码如上,请注意上述函数get_tensor_from_video返回的tensor的维度为[视频帧数量,宽,高,通道数],而有的神经网络模型要求输入[通道数,视频帧数量,宽,高],我们可以使用以下函数进行转换。
2.3 tensor维度交换
# T H W C -> C T H W
result_frames = result_frames.permute(3, 0, 1, 2)
当前分类随机文章推荐
- Python - 各种包安装、导入问题总结 阅读2218次,点赞0次
- Python - 使用代码判断当前Python版本号 阅读403次,点赞0次
- Python - 爬取直播吧首页重要赛事赛程信息 阅读374次,点赞0次
- Python - 解决skvideo库的Cannot find installation of real FFmpeg (which comes with ffprobe)问题 阅读183次,点赞0次
- Python - 解决opencv-python使用cv2.imread()读取中文路径图片失败的问题 阅读1314次,点赞1次
- Python - 安装onnxruntime-gpu出现ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory: '...\\numpy-1.23.1.dist-info\\METADATA' 阅读419次,点赞0次
- opencv-python - 读取视频,不改变视频分辨率修改视频帧率 阅读4934次,点赞2次
- Python - 在子线程中使用OpenCV异步读取摄像头视频帧传递到主线程中进行处理 阅读1295次,点赞1次
- Python - 运算符/ or // or %的含义和区别 阅读1902次,点赞0次
- Python - opencv-python统计一个文件夹以及所有子文件夹下所有视频的帧率和帧数 阅读359次,点赞0次
全站随机文章推荐
- Mediapipe - 全身包含身体、手部、面部所有关键点标注位置对应图 阅读5957次,点赞4次
- WordPress - Windows使用PhpStudy本地部署WordPress 阅读3807次,点赞0次
- 资源分享 - 3D Graphics Rendering Cookbook - A comprehensive guide to exploring rendering algorithms in modern OpenGL and Vulkan 英文高清PDF下载 阅读4232次,点赞1次
- Mediapipe - 使用Mediapipe Holistic识别身体、手、面部全身关节点 阅读6185次,点赞3次
- 资源分享 - Game AI Pro 360 - Guide to Tactics and Strategy 英文高清PDF下载 阅读1835次,点赞0次
- 工具软件推荐 - 好用的PDF多功能工具软件PDF Shaper Free 阅读1252次,点赞0次
- 资源分享 - 《Linux命令行大全》.((美)William E.shotts,Jr)中文pdf下载 阅读4096次,点赞2次
- 资源分享 - Artificial Intelligence - A Modern Approach , Third Edition 英文高清PDF下载 阅读1984次,点赞0次
- 资源分享 - Ray Tracing - The Next Week英文高清PDF下载 阅读2733次,点赞0次
- WordPress - 禁止非管理员登录后台 阅读1802次,点赞0次
评论
169