基于Python的OpenCV基础入门——视频的处理
- 视频
- OpenCV视频处理操作:
- 创建视频对象
- 判断视频是否成功初始化
- 读取视频帧
- 获取视频特征
- 设置视频参数
- 声明编码器
- 保存视频
- 释放视频对象
- 视频处理基本操作的代码实现:
视频
视频是由一系列连续的图像帧组成的。每一帧都是视频中的一张静止图像,它们以非常快的速度连续播放,给人一种连续运动的感觉。视频的帧率指的是每秒钟播放的帧数,常见的帧率有24帧/秒、30帧/秒和60帧/秒等。帧率越高,视频播放越流畅。视频的处理就是通过循环将视频流中的所有的帧进行处理
OpenCV视频处理操作:
创建视频对象
cap = cv2.VideoCapture(value)
参数:
设备索引或者一个视频文件名。摄像头读取则是设备索引,0为默认摄像头;视频文件读取则为filename
判断视频是否成功初始化
ret = cap.isOpened()
返回值:
ret :bool类型,成功则为True,否则为False。
读取视频帧
ret, frame = video.read()
返回值:
ret:bool类型,判断是否读取到帧,成功为True,否则为False。
frame:读取到的帧
获取视频特征
cap.get(propId)
参数:
propId : 0 到 18 之间的整数。每一个数代表视频的一个属性,在这里仅举几个常用的参数:
int | 属性 | propld |
---|---|---|
0 | 视频文件的当前位置(毫秒) | CV_CAP_PROP_POS_FRAMES |
1 | 下一步要解码/捕获的帧的基于0的索引 | CV_CAP_PROP_POS_AVI_RATIO |
3 | 视频流中帧的宽度 | CV_CAP_PROP_FRAME_HEIGHT |
4 | 视频流中帧的高度 | CV_CAP_PROP_FPS |
5 | 帧率 | CV_CAP_PROP_FOURCC |
设置视频参数
cap.set(propId, value)
参数:
propId : 0 到 18 之间的整数
value:设置的新值
声明编码器
fourcc = cv2.VideoWriter_fourcc(‘M’, ‘P’, ‘4’, ‘V’ ) , FourCC 是用于指定视频解码器的 4 字节代码。
参数 | 说明 |
---|---|
‘M’, ‘P’, ‘4’, ‘V’ | MPEG-4编码类型,文件扩展名为 .mp4 |
‘X’,‘2’,‘6’,‘4’ | MPEG-4编码类型,文件扩展名为.mp4 |
‘P’,‘I’,‘M’,‘I’ | MPEG-1编码类型,文件扩展名为.avi |
‘X’, ‘V’, ‘I’, ‘D’ | MPEG-4编码类型,文件扩展名为.avi |
‘I’, ‘4’, ‘2’, ‘0’ | YUV编码类型,文件扩展名为avi |
保存视频
out = cv2.VideoWriter(filename,fourcc, fps, frameSize)
参数:
filename:视频保存的位置
fourcc:指定视频编解码器的4字节代码
fps:帧率
frameSize:帧大小
释放视频对象
capture.release(),释放视频对象是必要的清理操作
视频处理基本操作的代码实现:
import cv2cap = cv2.VideoCapture('img/1.mp4')while(cap.isOpened()):ret, frame = cap.read()if ret == True:cv2.imshow('frame', frame)if cv2.waitKey(1) & 0xFF == ord('q'):breakelse:break
实现效果如下图: