OpenCV学习笔记-视频读取、播放和保存

视频的读取

可以通过本地相机、本地视频或者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

哈哈哈,鄙人英语词汇有限,请谅解哈哈哈!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值