23 视频处理与保存
个人资料,仅供学习使用
修改时间——2022年1月26日 00:49:43
学习课程:OpenCV4 C++ 快速入门视频30讲
视频老师:贾志刚
opencv知识点:
- VideoWriter类
- 获取视频属性 -
VideoWriter::get
- 视频保存 -
VideoWriter::write
本课所解决的问题:
- 分辨率都有哪几个等级?
- 如何获取视频的属性?
- 如何保存视频?
1.视频属性
视频有很多的属性,有时长,分辨率,帧宽度,帧高度,帧速率等
视频属性中,由于国内互联网视频网站的定义,我们对分辨率的区分有些误区。
所以这里重新介绍一下视频的分辨率,至于其他属性,一般不会有什么误区。
分辨率
通常国际标准,我们把视频分辨率分为三类
- SD—— 标清
- HD——高清
- UD——超高清
简要介绍如下
- 标清(
Standard Definition
)
是物理分辨率在720p以下的一种视频格式。
- 高清(
High Definition
)
将“高清”定义为720p、
1080i
与1080p
三种标准形式
而1080P又有另外一种称呼—全高清(FullHigh Definition
)。
关于高清标准,国际上公认的有两条:
- 视频垂直分辨率超过
720p
或1080i
- 视频宽纵比为
16:9
。
- 超高清(Ultra High-Definition)
来自国际电信联盟 (International Telecommunication Union)最新批准的信息显示,
“4K
分辨率 (3840×2160 像素)” 的正式名称被定为“超高清Ultra HD(UltraHigh-Definition)”
。
同时,这个名称也适用于“8K分辨率 (7680×4320像素)”。
CEA
要求,所有的消费级显示器和电视机必须满足以下几个条件之后,才能 贴上“超高清Ultra HD
” 的标签:首先屏幕最小的像素必须达到800 万有效像素(3840×2160)
在不改变屏幕分辨率的情况下,至少有一路传输端可以传输4K
视频,4K
内容的显示必须原生,
不可上变频,纵横比至少为16:9。
Ps:
720p
格式,分辨率为1280×720p/60Hz
,行频为45kHz
。4K
分辨率是1080p
的4倍3840×2160 =1920×2×1080×2
。8K
分辨率是4K
的4
倍7680×4320 = 3840×2×2160×2
。
帧
虽然介绍了分辨率,但本文主要演示一些帧相关的属性,具体如下
- 帧宽度——frame_width
- 帧高度——frame_height
- 总帧数——frame_count
- 帧速率—— FPS(Frames Per Second)
2.获取视频属性
在opencv中,我们如果要获取视频的属性,就要用到VideoCapture类的一个方法
- get
具体介绍如下
get
返回指定VideoCapture属性
共1个参数
第1个参数 指定的属性
VideoCapture
属性,有很多很多,具体可查阅文档
本文只用到4种属性
CAP_PROP_FRAME_WIDTH
- 视频流中帧的宽度
CAP_PROP_FRAME_HEIGHT
- 视频流中帧的高度
CAP_PROP_FRAME_COUNT
- 视频文件中的帧数
CAP_PROP_FPS
- 帧率
演示如