2018KW13/1-OpenCV入门-视频的捕获和存取
Posted 一步一步学Python
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018KW13/1-OpenCV入门-视频的捕获和存取相关的知识,希望对你有一定的参考价值。
今天主要讲一下如何读取视频文件,显示视频,保存视频文件
学会从摄像头获取并显示视频
cv2.VideoCapture(),cv2.VideoWrite()是今天主要使用的函数
捕获视频
简单的任务是从摄像头捕获一段视频,并把它转换成灰度视频显示出来。
为了获取视频,你应该创建一个 VideoCapture 对象。
他的参数可以是设备的索引号,或者是一个视频文件。
设备索引号就是在指定要使用的摄像头。
一般的笔记本电脑都有内置摄像头。所以参数就是 0。
你可以通过设置成 1 或者其他的来选择别的摄像头。
之后,你就可以一帧一帧的捕获视频了。但是最后,别忘了停止捕获视频。
cap.read()返回一个布尔值,如果帧读取的是正确的,就是True,所以通过检查该函数的返回值来确定视频文件是否已经到了结尾。
可以使用函数 cap.get(propId) 来获得视频的一些参数信息,比如我们要获取每一帧的宽和高。
其实这个是比较固定的。
import cv2
cap=cv2.VideoCapture(0)
i=0
while(True):
i=i+1
ret,frame=cap.read()
print('Frame ID: ',i,cap.get(3),cap.get(4))
gray=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
cv2.imshow('frame',gray)
if cv2.waitKey(1)==ord('q'):
break
cap.release()
cv2.destroyAllWindows()
保存视频的操作
需要创建一个VideoWriter的对象,我们应该确定一个输出文件的名字。
指定FourCC编码,播放帧率和帧的大小也需要确定,最后就是isColor标签。
在下面的例子中
首先通过VideoCapture函数得到一个抓取器
FOURCC的设置方法,在opencv3中也有所改变
然后定义了一个VideoWriter对象。
import cv2
cap=cv2.VideoCapture(0)
fourcc=cv2.VideoWriter_fourcc('X','V','I','D')
out=cv2.VideoWriter('pic/output.avi',fourcc,20.0,(640,480))
while(cap.isOpened()):
#这里的ret值得是read方法的结果,如果读到帧,就是true,否则就是false
ret,frame=cap.read()
if ret==True: #frame=cv2.flip(frame,0)
out.write(frame)
cv2.imshow('frame',frame)
if cv2.waitKey(1)==ord('q'):
break
else:
cap.open()
cap.release()
out.release()
cv2.destroyAllWindows()
视频的读取
与从摄像头中捕获一样,你只需要把设备索引号改成视频文件的名字。在
播放每一帧时,使用 cv2.waiKey() 设置适当的持续时间。如果设置的太低视
频就会播放的非常快,如果设置的太高就会播放的很慢(你可以使用这种方法
控制视频的播放速度)。通常情况下 25 毫秒就可以了
import cv2
cap=cv2.VideoCapture('pic/output.avi')
while(cap.isOpened()):
ret,frame=cap.read()
if ret: #frame=cv2.flip(frame,0)
cv2.imshow('frame',frame)
else:
break
if cv2.waitKey(100)==ord('q'):
break
cap.release()
cv2.destroyAllWindows()
以上是关于2018KW13/1-OpenCV入门-视频的捕获和存取的主要内容,如果未能解决你的问题,请参考以下文章