资讯专栏INFORMATION COLUMN

Python运用VideoCapture读取录像或监控摄像头然后进行储存

89542767 / 745人阅读

  此篇文章主要是给大家介绍一下OpenCV中cv2.VideoCapture函数的应用,并通过cv2.VideoCapture读取录像或监控摄像头及其开展储存帧图象或者视频,感兴趣的朋友可以看看。


  一、词法:cap=cv2.VideoCapture(0)


  表明:主要参数0表明默认笔记本电脑的内嵌第一位监控摄像头,必要时载入已经有的小视频则主要参数改成录像所属途径途径,比如:cap=cv2.VideoCapture('video.mp4')


  二、词法:cap.isOpened()


  表明:分辨录像目标成功与否载入,取得成功载入录像目标回到True。


  三、词法:ret,frame=cap.read()


  表明:按帧载入录像,传参ret是布尔型,恰当载入则回到True,载入不成功或载入视频结尾往往会回到False。frame为每一秒的图象,这儿图象是三维立体引流矩阵,即frame.shape=(640,480,3),载入的图象为BGR格式。


  四、词法:key=cv2.waitKey(1)


  表明:等候数字键盘,主要参数1表明延迟1ms切换至下每帧,主要参数为0表明表明现阶段帧,等同于中止。


  五、载入监控摄像头并储存为视频代码讲解


  import cv2
  def videocapture():
  cap=cv2.VideoCapture(0)#生成读取摄像头对象
  width=int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))#获取视频的宽度
  height=int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))#获取视频的高度
  fps=cap.get(cv2.CAP_PROP_FPS)#获取视频的帧率
  fourcc=int(cap.get(cv2.CAP_PROP_FOURCC))#视频的编码
  #定义视频对象输出
  writer=cv2.VideoWriter("video_result.mp4",fourcc,fps,(width,height))
  while cap.isOpened():
  ret,frame=cap.read()#读取摄像头画面
  cv2.imshow('teswell',frame)#显示画面
  key=cv2.waitKey(24)
  writer.write(frame)#视频保存
  #按Q退出
  if key==ord('q'):
  break
  cap.release()#释放摄像头
  cv2.destroyAllWindows()#释放所有显示图像窗口
  if __name__=='__main__':
  videocapture()


  六、读取视频并按帧进行保存代码演示:


  import numpy as np
  import cv2
  import os
  def video2image(video_dir,save_dir):
  cap=cv2.VideoCapture(video_dir)#生成读取视频对象
  n=1#计数
  width=int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))#获取视频的宽度
  height=int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))#获取视频的高度
  fps=cap.get(cv2.CAP_PROP_FPS)#获取视频的帧率
  fourcc=int(cap.get(cv2.CAP_PROP_FOURCC))#视频的编码
  #定义视频输出
  #writer=cv2.VideoWriter("teswellvideo_02_result.mp4",fourcc,fps,(width,height))
  i=0
  timeF=int(fps)#视频帧计数间隔频率
  while cap.isOpened():
  ret,frame=cap.read()#按帧读取视频
  #到视频结尾时终止
  if ret is False:
  break
  #每隔timeF帧进行存储操作
  if(n%timeF==0):
  i+=1
  print('保存第%s张图像'%i)
  save_image_dir=os.path.join(save_dir,'%s.jpg'%i)
  print('save_image_dir:',save_image_dir)
  cv2.imwrite(save_image_dir,frame)#保存视频帧图像
  n=n+1
  cv2.waitKey(1)#延时1ms
  cap.release()#释放视频对象
  #读取文件夹所有视频,每个视频按帧保存图像
  def video2image_multi(video_path,save_path):
  video_list=os.listdir(video_path)
  for i in range(len(video_list)):
  video_dir=os.path.join(video_path,video_list<i>)
  cap=cv2.VideoCapture(video_dir)
  fps=cap.get(cv2.CAP_PROP_FPS)#视频的帧率
  save_num=0
  n=1#计数
  timeF=int(fps)#视频帧计数间隔频率
  while cap.isOpened():
  ret,frame=cap.read()
  if ret is False:
  break
  #每隔timeF帧进行存储操作
  if(n%timeF==0):
  save_num+=1
  save_image_dir=os.path.join(save_path,'%s_%s.jpg'%(i,save_num))
  cv2.imwrite(save_image_dir,frame)
  n=n+1
  cv2.waitKey(1)
  cap.release()
  print('读取第%s个视频完成!!!'%i)
  if __name__=='__main__':
  video_to_image(r'E:AIvideo.mp4',r'E:AIvideo2image')


  以上就是小编给大家介绍的,希望可以给大家带来一定帮助。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/128696.html

相关文章

  • opencv python像头获取视频/从文件获取视频 /保存视频

    摘要:这次开始学习从摄像头获取视频使用获取视频要获取视频,需要创建一个对象,参数可以是设备索引摄像头索引或视频文件的名称。 这次开始学习Getting Started with Videos 1从摄像头获取视频 使用cv2.VideoCapture()获取视频. cv2.VideoCapture(builtins.object) 要获取视频,需要创建一个VideoCapture对象,参数可以...

    netmou 评论0 收藏0
  • Python中使用OpenCV进行人脸检测

    摘要:总结在本文中,我们学习了如何使用中的,即通过代码写了一个人脸检测的程序。 OpenCV是如今最流行的计算机视觉库,而我们今天就是要学习如何安装使用OpenCV,以及如何去访问我们的摄像头。然后我们一起来看看写一个人脸检测程序是如何地简单,简单到只需要几行代码。 在开始之前,我假设你已经对Python有一定的了解。当然,如果你觉得你还不够格,这里有推荐一些学习Python的电子书,你可以...

    stefanieliang 评论0 收藏0
  • 基于Opencv的手势识别

    摘要:同时打印出了手上的每个结点的位置变化。解决方案使用国内镜像安装这时候,考虑使用国内镜像安装,会快很多。点击下面的即可。 文章目录 一、 效果(版本2的效果)二、全...

    曹金海 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<