opencv视频流

1、捕获摄像头的视频帧

OpenCV 提供了cv2.VideoCapture() :0为默认计算机默认摄像头,1或者其他的选择来更换来源

获取过程:

        需要先创建一个VideoCapture的对象,参数可以是设备的索引号,或者是一个视频文件。设备索引号就是在指定要使用的摄像头。一般的笔记本电脑都有内置摄像头。所以参数就是 0。可以通过设置成 1 或者其他的来选择别的摄像头。之后,就可以一帧一帧的捕获视频了。最后,一定要停止捕获视频。

import numpy as np

import cv2

cap = cv2.VideoCapture(0)

while(True):

    #capture frame-by-frame

    ret , frame = cap.read()# 返回一个布尔值(True/False)。如果帧读取的是正确的, 就是 True

    #our operation on the frame come here

    gray = cv2.cvtColor(frame , cv2.COLOR_BGR2GRAY)

    #display the resulting frame

    cv2.imshow('frame',gray)

    if cv2.waitKey(1) &0xFF ==ord('q'):

        #按q键退出

        break

#when everything done , release the capture

cap.release()

cv2.destroyAllWindows()

有时 cap 可能不能成功的初始化摄像头设备。这种情况下上面的代码会报错。你可以使用 cap.isOpened(),来检查是否成功初始化了。如果返回值是True,那就没有问题。否则就要使用函数 cap.open()。

当需要同步一组摄像头或者一个多头的摄像头的时候,read()方法就不适用,一般会采取grab()和retrieve()方法代替它。

cap0 = cv2.VideoCapture(0)

cap1 = cv2.VideoCapture(1)

success0 = cap0.grab()

success1 = cap1.grab()

if success0 and success1:

    frame0 = cap0.retrieve()

    frame1 = cap1.retrieve()

可以使用函数 cap.get(propId) 来获得视频的一些参数信息。这里propId 可以是 0 到 41 之间的任何整数。每一个数代表视频的一个属性。其中的一些值可以使用 cap.set(propId,value) 来修改,value 就是你想要设置成的新值。

例如,我可以使用 cap.get(3) 和 cap.get(4) 来查看每一帧的宽和高。默认情况下得到的值是 640X480。但是我可以使用 ret=cap.set(3,320)和 ret=cap.set(4,240) 来把宽和高改成 320X240。

propId数字对应表

PS:当get里边的值不再范围之内,即不支持所查询的这个属性,会返回0

2、从文件中播放视频

把设备索引号改成文件名即可

cap=cv2.VideoCapture('filename.avi')#文件名及格式

在播放每一帧时,使用 cv2.waiKey() 设置适当的持续时间。一般使用25ms

3、保存视频

创建一个VideoWrite的对象,确定输出文件名,指定FourCC编码,播放频率和帧的大小,最后是isColor标签True为彩色。

FourCC是一个4字节码,用来确定视频的编码格式。在不同的系统,编码格式会稍有不同。

Linux : DIVX , XVID , MJPG , X264 , WMV1 , WMV2;XVID是最好的,MJPG是高尺寸视频,X264得到小尺寸视频

Windows : DIVX

fourcc也可以写成 fourcc = cv2.VideoWriter_fourcc('I','4','2','0')这样形式

PS:设置FourCC格式时,原文里采用了cv2.VideoWriter_fourcc()这个函数,若运行程序的时候显示这个函数不存在,可以改用了cv2.cv.CV_FOURCC这个函数

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容