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入门-视频的捕获和存取的主要内容,如果未能解决你的问题,请参考以下文章

视频捕获

OpenCV-python视频入门

18KW13/4-OpenCV入门-制作一个调色板

18KW15/1-OpenCV入门-初识轮廓

18KW13/6-OpenCV入门-关于图像的算数运算

18KW13/5-OpenCV入门-图像处理的一些基础操作