一、本地视频文件操作
1、读取
import cv2
video_path = 'xx.mp4'
capture = cv2.VideoCapture(video_path)
- 判断文件是否打开(VideoCapture 类读取视频时判断视频是否损坏或路径存在问题,导致视频无法读取,若返回False,则视频存在以上情况,若返回True则视频正常打开)
capture.isOpened()
2、视频参数获取
2.1、参数介绍
序号 | 参数 | 解释 |
0 | CAP_PROP_POS_MSEC | 以毫秒为单位的视频文件的当前位置或视频捕获时间戳 |
1 | CAP_PROP_POS_FRAMES | 接下来要解码/捕获的帧的基于 0 的索引 |
2 | CAP_PROP_POS_AVI_RATIO | 视频文件的相对位置:0:开头,1 :结尾 |
3 | CAP_PROP_FRAME_WIDTH | 获取视频宽度 |
4 | CAP_PROP_FRAME_HEIGHT | 获取视频长度 |
5 | CAP_PROP_FPS | 计算视频帧速率 |
6 | CAP_PROP_FOURCC | 编解码器的 4 字符代码 |
7 | CAP_PROP_FRAME_COUNT | 计算视频总帧数 |
8 | CAP_PROP_FORMAT | Format of the Mat objects returned by retrieve(). |
9 | CAP_PROP_MODE | Backend-specific value indicating the current capture mode. |
10 | CAP_PROP_BRIGHTNESS | 图像亮度(仅适用于相机) |
11 | CAP_PROP_CONTRAST | 图像对比度(仅适用于相机) |
12 | CAP_PROP_SATURATION | 图像饱和度(仅适用于相机) |
13 | CAP_PROP_HUE | 图像色调(仅适用于相机) |
14 | CAP_PROP_GAIN | 图像增益(仅适用于相机) |
15 | CAP_PROP_EXPOSURE | 图像曝光(仅适用于相机) |
16 | CAP_PROP_CONVERT_RGB | 指示图像是否应转换为 RGB 的布尔指标 |
17 | CAP_PROP_WHITE_BALANCE_U | 白平衡设置的U值(注:目前仅DC1394 v 2.x后端支持) |
18 | CAP_PROP_WHITE_BALANCE_V | 白平衡设置的V值(注:目前仅DC1394 v 2.x后端支持) |
19 | CAP_PROP_RECTIFICATION | 立体相机的整流标志(注意:目前仅支持 DC1394 v 2.x 后端 |
20 | CAP_PROP_ISO_SPEED | 相机的 ISO 速度(注意:目前仅支持 DC1394 v 2.x 后端) |
21 | CAP_PROP_BUFFERSIZE | 内部缓冲存储器中存储的帧数(注意:目前仅支持 DC1394 v 2.x 后端) |
2.2、用法
- 以计算帧率为例
video_path = 'xx.mp4'
capture = cv2.VideoCapture(video_path)
capture.get(cv2.CAP_PROP_FPS)
- 此参数位于第六位置,故也可用位置信息代替
video_path = 'xx.mp4'
capture = cv2.VideoCapture(video_path)
capture.get(5)
3、显示
while True:
ret,frame = cap.read()
if ret:
cv2.imshow('',frame)
if cv2.waitKey(20) & 0xFF == ord('q'): #按键事件,如果按下q键,则停止播放且退出
break
else:
break
capture.release()
cv2.destroyAllWindows()
4、将视频文件保存为本地图片
img_path = '要保存的路径'
video_path = 'xx.mp4'
num = 0
capture = cv2.VideoCapture(video_path)
while True:
ret,frame = cap.read()
if ret:
cv2.imwrite(os.path.join(img_path,str(num) + '.jpg'),frame)
num+=1
else:
break
二、摄像头操作
1、读取
- "0":代表电脑内置摄像头
- "1":代表电脑外部摄像头
import cv2
capture = cv2.VideoCapture(0)
capture = cv2.VideoCapture(1)
- 从IP地址读取
capture = cv2.VideoCapture(IP)
2、显示
代码同视频文件操作
3、保存
代码同视频文件操作