视频的读取
可以通过本地相机、本地视频或者ip摄像头读取视频
API接口
cv2.VidwoCapture(<int/str>path)
参数1 path: 为 0 即可读取本地USB摄像头;为视频路径即可读取本地视频文件;读取ip摄像头需要填写具体设备厂商的读取url。
代码示例
import cv2
# 本地USB摄像头读取
reader = cv2.VideoCapture(0)
# 读取本地视频文件
#reader = cv2.VideoCapture("./test.mp4")
# 读取ip摄像头, 举例海康威视摄像头主码流
#reader = cv2.VideoCapture("rtsp://admin:12345@192.168.2.65:554/h264/ch1/main/av_stream")
ret, frame = reader.raed()
while ret:
# 显示视频帧
cv2.imshow("VIDEO-FRAME", frame)
cv2.waitKey(1)
ret, frame = reader.read()
获取视频信息
opencv视频参数:
- 0 cv2.CV_CAP_PROP_POS_MSEC 当前视频读取的时间戳
- 1 cv2.CV_CAP_PROP_POS_FRAMES 基于0的索引将被解码/捕获下一帧
- 2 cv2.CV_CAP_PROP_POS_AVI_RATIO
- 3 cv2.CV_CAP_PROP_FRAME_WIDTH 帧的宽度
- 4 cv2.CV_CAP_PROP_FRAME_HEIGHT 帧的高度
- 5 cv2.CV_CAP_PROP_FPS 视频帧率
- 6 cv2.CV_CAP_PROP_FOURCC 视频编码器格式
- 7 cv2.CV_CAP_PROP_FRAME_COUNT 视频总的帧数
- 8 cv2.CV_CAP_PROP_FORMAT byretrieve()返回的Mat对象的格式
- 9 cv2.CV_CAP_PROP_MODE 指示当前捕获模式的后端特定值
- 10 cv2.CV_CAP_PROP_BRIGHTNESS 视频图像的亮度(仅适用于相机)
- 11 cv2.CV_CAP_PROP_CONTRAST 视频图像对比度(仅适用于相机)
- 12 cv2.CV_CAP_PROP_SATURATION 视频图像的饱和度(仅适用于相机)
- 13 cv2.CV_CAP_PROP_HUE 视频图像的色相(仅适用于相机)
- 14 cv2.CV_CAP_PROP_GAIN 视频图像的增益(仅适用于相机)
- 15 cv2.CV_CAP_PROP_EXPOSURE 视频的曝光(仅适用于相机)
- 16 cv2.CV_CAP_PROP_CONVERT_RGB 视频图像是否已转换为RGB的布尔标志
- 17 cv2.CV_CAP_PROP_WHITE_BALANCE_U 白平衡的U值
- 18 cv2.CV_CAP_PROP_WHITE_BALANCE_V 白平衡的V值
- 19 cv2.CV_CAP_PROP_RECTIFICATION 立体摄像机的整流标志
代码示例
import cv2
reader = ViideoCapture("./test.mp4")
# 获取视频的fps
fps = reader.get(5)
视频的保存
API接口:
cv2.imwrite(<str>path, <bytes>fourcc, <float>fps, <tuple>size)
参数1 path: 视频保存路径
参数2 fourcc: 视频编码器4字节代码,具体查【fourcc.org】
参数3 fps: 保存视频的帧率
参数3 size: 保存视频的帧的大小,为(宽,高)
代码示例:
import cv2
# 读取摄像头
reader = cv2.VideoCapture(0)
# 设置保存视频
width = reader.get(3)
height = reader.get(4)
fps = reader.get(5)
fourcc = cv2.VideoWriter_fourcc(*'XVID')
writer = cv2.VideoWriter("./test-save.mp4", fourcc, fps, (width, height))
# 逐帧读取保存
ret, frame = reader.read()
while ret:
writer.write(frame)
ret, frame = reader.read()
平时敲代码。我会把视频读写创建过程包成一个函数:
import cv2
def reader_writer(rp, wp):
reader = cv2.VideoCapture(rp)
width = reader.get(3)
height = reader.get(4)
fps = reader.get(5)
fourcc = cv2.VideoWriter_fourcc(*'XVID')
writer = cv2.VideoWriter(wp, fourcc, fps, (width, height))
return reader, writer
哈哈哈,鄙人英语词汇有限,请谅解哈哈哈!