视频的读取,显示和保存

用摄像头捕获视频

import cv2                                                                 
#创建一个 VideoCapture 对象,参数可以是设备的索引号,或者是一个视频文件                                
cap = cv2.VideoCapture(0)  #设备索引号就是在指定要使用的摄像头。一般的笔记本电脑都有内置摄像头。所以参数就是 0。                                                
while(True):
    #读帧
    ret, frame = cap.read()
    cv2.imshow('frame',frame)    #显示一帧图像
    if cv2.waitKey(1) & 0xFF == ord('q'):  #一毫秒刷新一次图像,等待键盘输入
        break
cap.release()
cv2.destroyAllWindows()                                                       
  1. cap.read() 返回两个值,先返回一个布尔值,如果视频读取正确,则为 True,如果错误,则为 False,也可用来判断是否到视频末尾。再返回一个值,为每一帧的图像,该值是一个三维矩阵
  2. cap.get(propId) 可以获取到视频的一些参数信息
  3. cap.set(propId,value) 可以设置新的值
// propId
0) CV_CAP_PROP_POS_MSEC     视频文件的当前位置,以毫秒为单位.
1) CV_CAP_PROP_POS_FRAMES   接下来要解码/捕获的帧的基于0的索引。
2) CV_CAP_PROP_POS_AVI_RATIO  视频文件的相对位置:0 - 电影的开始,电影的1 - 结束。
3) CV_CAP_PROP_FRAME_WIDTH    视频流中帧的宽度。
4) CV_CAP_PROP_FRAME_HEIGHT   视频流中帧的高度.
5) CV_CAP_PROP_FPS   帧率.
6) CV_CAP_PROP_FOURCC    编解码器的4个字符代码.
7) CV_CAP_PROP_FRAME_COUNT    视频文件中的帧数。
8) CV_CAP_PROP_FORMAT     通过retrieve()返回的Mat对象的格式。
9) CV_CAP_PROP_MODE   指示当前捕获模式的后端特定值。
10) CV_CAP_PROP_BRIGHTNESS    图像的亮度(仅适用于相机)。
11) CV_CAP_PROP_CONTRAST     图像对比(仅适用于相机).
12) CV_CAP_PROP_SATURATION    图像饱和度(仅适用于相机)。
14) CV_CAP_PROP_HUE      图像的色相(仅适用于相机)。
15) CV_CAP_PROP_GAIN     获取图像(仅适用于相机)。
16) CV_CAP_PROP_EXPOSURE    曝光(仅适用于相机)。
17) CV_CAP_PROP_CONVERT_RGB      指示其他图像应转换为RGB的布尔标志。
18) CV_CAP_PROP_WHITE_BALANCE    目前不支持
19) CV_CAP_PROP_RECTIFICATION   立体声整流标志相机(注意:仅支持DC1394 v 2.x后端)

从文件中播放视频

import cv2
#创建一个 VideoCapture 对象,参数可以是设备的索引号,或者是一个视频文件
cap = cv2.VideoCapture("E://test.mp4")  #参数为视频路径
#获取视频相关参数
fps = cap.get(5)
height,width = cap.get(3),cap.get(4)
print("帧率:",fps)
print("高度:",height)
print("宽度:",width)
#设置视频相关参数
cap.set(0,10000)  #设置初始视频位置
while(True):
    #读帧
    ret, frame = cap.read()
    cv2.imshow('frame',frame)    #显示一帧图像
    if cv2.waitKey(1) & 0xFF == ord('q'):  #一毫秒刷新一次图像,等待键盘输入
        break
cap.release()
cv2.destroyAllWindows()

写视频

在我们捕获视频,并对每一帧都进行加工之后我们想要保存这个视频。对于图片很简单只需要使用 cv2.imwrite()。但对于视频来说就要多做点工作。
这次我们要创建一个 VideoWriter 的对象。我们应该确定一个输出文件的名字。接下来指定 FourCC 编码(下面会介绍)。播放频率和帧的大小也都需要确定。最后一个是 isColor 标签。如果是 True,每一帧就是彩色图,否则就是灰度图。
FourCC 就是一个 4 字节码,用来确定视频的编码格式。可用的编码列表
可以从fourcc.org查到。这是平台依赖的。

import cv2
cap = cv2.VideoCapture(0)
fourcc = cv2.VideoWriter_fourcc(*'XVID')  #指定 FourCC 编码,确定视频的编码格式
out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640,480),True)   #创建一个 VideoWriter 的对象。
while(cap.isOpened()):
    ret, frame = cap.read()
    if ret==True:
        out.write(frame)   #将该帧图像写出
        cv2.imshow('frame',frame)
        if cv2.waitKey(1)& 0xFF== ord("q"):
            break
    else:
        break
cap.release()
out.release()
cv2.destroyAllWindows()
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值