当前位置:   article > 正文

【opencv3 学习记录】第二章 读取显示保存视频_cap.read

cap.read

一:捕获视频函数

1.函数:cv2.VideoCapture(参数)

2.参数说明:

(1)开启摄像头:参数一般为0,你可以通过设置成 1 或 者其他的来选择别的摄像头。

(2)从文件夹中获取视频:参数为字符串形式的文件路径

3.示例:

cap = cv2.VideoCapture(0)   #cap:存放参数

二:读取视频函数

1.函数:cap.read()

2.函数说明:

(1)cap.read 中cap与捕获视频函数存放函数一致,可以自己命名,括号一般不用填写。

(2)ret,frame=cap.read函数会返回两个函数值。一个为布尔逻辑值(True、False),表示是否读到视频画面帧,返回到ret。另一个是视频画面帧信息(矩阵)返回到frame。

3.示例:

ret, frame = cap.read()     #ret布尔值,frame视频画面信息

三:判断视频读取正常函数

1.函数:cap.is Opened()

2.说明:函数返回值为布尔值,括号里一般不用填写。

3.示例:

  1. while(cap.isOpened()):
  2. ret,frame=cap.read()

四:显示视频函数

1.函数:cv2.imshow('窗口名称',视频存放参数)

2.示例

cv2.imshow('viedo',cap)

五:保存视频函数

(1)背景知识补充

        在我们捕获视频,并对每一帧都进行加工之后我们想要保存这个视频。对于图片来时很简单只需要使用 cv2.imwrite()。但对于视频来说就要多做点工作。 这次我们要创建一个 VideoWriter 的对象。我们应该确定一个输出文件的名字。接下来指定 FourCC 编码、播放频率和帧的大小也都 需要确定。

         FourCC 就是一个 4 字节码,用来确定视频的编码格式。可用的编码列表可以从fourcc.org查到。In Fedora: DIVX, XVID, MJPG, X264, WMV1, WMV2. (XVID is more preferable. MJPG results in high size video. X264 gives very small size video)

        FourCC 码以下面的格式传给程序,以 MJPG 为例:cv2.cv.FOURCC('M','J','P','G') 或者 cv2.cv.FOURCC(*'MJPG')。

      有了上述背景补充,我们可以了解到,保存一个视频需要FourCC编码值、帧率值、视频分辨率。在保存视频时,我们可以按照需求自己定义所需参数值,或者保持原视频参数不变。后一种情况相比第一种情况,只是多了获取原视频参数的操作。

(2)需要用到的代码段

1.获取原视频参数函数

①获取FourCC值

  1. fourcc = int(cap.get(cv2.CAP_PROP_FOURCC))
  2. print('fourcc=',fourcc)

②获取原视频帧率

  1. fps = cap.get(cv2.CAP_PROP_FPS)
  2. print('fps=%d'%fps)

③获取原视频的宽、高

  1. frameSize=(int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)),int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
  2. print('frameSize=', frameSize)

2.创建需要写入的视频文件

out = cv2.VideoWriter('需要保存视频的文件路径',fourcc, 帧率值, (宽,高))

out = cv2.VideoWriter("outputVideo", fourcc, fps, frameSize)

3.读取成功就将数据帧写入到文件

out.write(frame)

六:键盘绑定函数

1.函数:cv2.waitKey(参数)

2.说明:括号中参数表示读取一帧所需的时间(毫秒),一般25毫秒就可以了。与图像键盘绑定函数用法一样。

七:视频灰度函数

1.函数:cv2.cvtColor(frame,cv2.Color_BGR2GRAY)

2.示例:

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

八:练习

加载一个视频,进行灰度显示,用‘q’键控制保存时长

  1. import cv2
  2. cap=cv2.VideoCapture('F:/video/video.mp4')
  3. fourcc = int(cap.get(cv2.CAP_PROP_FOURCC))
  4. print('fourcc=', fourcc)
  5. fps = cap.get(cv2.CAP_PROP_FPS)
  6. print('fps=%d' % fps)
  7. frameSize = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
  8. print('frameSize=', frameSize)
  9. out= cv2.VideoWriter('F:/video/gray.mp4', fourcc, fps, frameSize)
  10. while(cap.isOpened()):
  11. ret,frame=cap.read()
  12. if ret==True:
  13. gary=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
  14. out.write(gary)
  15. cv2.imshow('video',gary)
  16. if cv2.waitKey(1) == ord('q'):
  17. break
  18. cap.release()
  19. out.release()

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/280264
推荐阅读
相关标签
  

闽ICP备14008679号