什么是视频数据
百度百科对于视频数据的定义:视频数据是指连续的图像序列,其实质是由一组组连续的图像构成的,而对于图像本身而言,除了其出现的先后顺序而外,没有任何结构信息。
视频数据有什么特点
1.信息内容丰富
视频数据是随时间变化的图像流,含有更为丰富的其他媒体所无法表达的信息和内容。
2.数据量巨大
视频数据的数据量比结构记录的文本数据大约大七个数量级。视频数据对存储空间和传输信道的要求很高,即使是一小段的视频剪辑,也需要比一般字符型数据大得多的存储空间。通常在管理视频数据时都要对其进行压缩编码,但是压缩后的视频数据量仍然很大。
3.时空二重性的复杂结构关系
视频数据由多幅连续的图像序列构成,因而视频段之间的关系属性复杂,既有时间属性又有空间属性。
深度学习处理视频需要考虑什么
1. 图像分辨率
视频都由多张图像组成,图像的分辨率能代表视频质量的好坏(指清晰、和逼真程度)。分辨率越高存储的信息越多,占用的空间也就越大,训练需要的显卡资源也越多,考虑到资源的限制,我们一般会把单张的图片resize到224*224。
2. 视频的帧率
视频的帧率是指视频播放1秒时,播放量多少帧图像,假设一部影片的帧率是30fps,播放一秒钟视频就在屏幕上闪现了30张图像,60fps也同理。在训练过程中我们大概率不需要非常高的帧率,这时就需要手动做抽帧了(抽帧后数据量减少,有效缓解硬件压力)
图像分辨率和视频帧率是数据预处理时最先考虑的事情,拿到了这个数据我们就需要考虑使用少分辨率、多少帧率的数据进行标注、训练。
处理视频数据常用的库
我在工作中常用的视频处理库有opencv、numpy。opencv可以读取图像、视频数据,也能获取到图像的分辨率、帧率等信息,numpy主要是对数据做计算操作。
![opencv图标](https://i-blog.csdnimg.cn/blog_migrate/14159d1bbee3ef9b0f3f1a57e36c5471.jpeg)
使用opencv加载视频数据
下面的代码主要作用:加载本地视频数据并播放
import cv2
video = cv2.VideoCapture('视频所在位置')
while True:
# 读取图像
retval ,frame = video.read()
if retval == True:
# 显示图像
cv2.imshow('video',frame)
cv2.waitKey(20)
else:
break
# 释放资源
video.release()
cv2.destroyAllWindows()
结尾
在这篇blog中简单的讲了视频数据的特征,并分析了哪些视频特征的作用,简单使用opencv加载了本地视频做可视化,后续我们将讲述怎么对图像做resize、抽帧。感谢您的观看,觉得写的还可以请帮忙点个赞和收藏!