OpenCV中VideoCapture类的使用详解


Posted in Python onFebruary 14, 2020

主要记录Python-OpenCV中的VideoCapture类的使用;官方文档;

VideoCapture()是用于从视频文件、图片序列、摄像头捕获视频的类;

#!/usr/bin/env python
#-*- coding:utf-8 -*-
# @Time : 19-4-21 上午10:31
# @Author : chen

"""
VideoCapture()的使用
"""
import cv2
import argparse
import os
import pdb

ap = argparse.ArgumentParser()
ap.add_argument("-v", "--videoPath", default="./video_1.mp4", help="path to input video")
ap.add_argument("-o", "--outputPath", default="grabImages", help="path to output frames")

args = vars(ap.parse_args())

# 初始化,并读取第一帧
# rval表示是否成功获取帧
# frame是捕获到的图像
vc = cv2.VideoCapture(args["videoPath"])
rval, frame = vc.read()

# 获取视频fps
fps = vc.get(cv2.CAP_PROP_FPS)
# 获取视频总帧数
frame_all = vc.get(cv2.CAP_PROP_FRAME_COUNT)
print("[INFO] 视频FPS: {}".format(fps))
print("[INFO] 视频总帧数: {}".format(frame_all))
print("[INFO] 视频时长: {}s".format(frame_all/fps))

outputPath = os.path.sep.join([args["outputPath"]])
if os.path.exists(outputPath) is False:
 print("[INFO] 创建文件夹,用于保存提取的帧")
 os.mkdir(outputPath)

# 每隔100帧保存一张图片
frame_interval = 100
# 统计当前帧
frame_count = 1
# 保存图片个数
count = 0
while rval:
 rval, frame = vc.read()
 if frame_count % frame_interval == 0:
  filename = os.path.sep.join([outputPath, "test_{}.jpg".format(count)])
  cv2.imwrite(filename, frame)
  count += 1
  print("保存图片:{}".format(filename))
 frame_count += 1

# 关闭视频文件
vc.release()
print("[INFO] 总共保存:{}张图片".format(count))

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python的描述符(descriptor)、装饰器(property)造成的一个无限递归问题分享
Jul 09 Python
Linux下使用python调用top命令获得CPU利用率
Mar 10 Python
web.py在SAE中的Session问题解决方法(使用mysql存储)
Jun 24 Python
利用PyInstaller将python程序.py转为.exe的方法详解
May 03 Python
简单了解python模块概念
Jan 11 Python
Python提取支付宝和微信支付二维码的示例代码
Feb 15 Python
python实现栅栏加解密 支持密钥加密
Mar 20 Python
python使用requests模块实现爬取电影天堂最新电影信息
Apr 03 Python
python怎么对数字进行过滤
Jul 05 Python
4款Python 类型检查工具,你选择哪个呢?
Oct 30 Python
python中Mako库实例用法
Dec 31 Python
用60行代码实现Python自动抢微信红包
Feb 04 Python
Python networkx包的实现
Feb 14 #Python
python常用运维脚本实例小结
Feb 14 #Python
Python如何在DataFrame增加数值
Feb 14 #Python
python turtle工具绘制四叶草的实例分享
Feb 14 #Python
Python阶乘求和的代码详解
Feb 14 #Python
Python pip配置国内源的方法
Feb 14 #Python
Python3基本输入与输出操作实例分析
Feb 14 #Python
You might like
PHP中的extract的作用分析
2008/04/09 PHP
php表单请求获得数据求和示例
2014/05/15 PHP
微信公众号点击菜单即可打开并登录微站的实现方法
2014/11/14 PHP
Codeigniter购物车类不能添加中文的解决方法
2014/11/29 PHP
简单的无缝滚动程序-仅几行代码
2007/05/08 Javascript
几个有趣的Javascript Hack
2010/07/24 Javascript
jQuery hover 延时器实现代码
2011/03/12 Javascript
Javascript中innerHTML用法实例分析
2015/01/12 Javascript
javascript数组遍历的方法实例分析
2016/09/13 Javascript
javascript实现无法关闭的弹框
2016/11/27 Javascript
json数据处理及数据绑定
2017/01/25 Javascript
jQuery插件HighCharts实现的2D条状图效果示例【附demo源码下载】
2017/03/15 Javascript
nodeJS(express4.x)+vue(vue-cli)构建前后端分离实例(带跨域)
2017/07/05 NodeJs
Node.js利用断言模块assert进行单元测试的方法
2017/09/28 Javascript
全面介绍vue 全家桶和项目实例
2017/12/27 Javascript
基于Swiper实现移动端页面图片轮播效果
2017/12/28 Javascript
微信小程序自定义组件封装及父子间组件传值的方法
2018/08/28 Javascript
解决微信小程序scroll-view组件无横向滚动的问题
2020/02/04 Javascript
基于canvasJS在PHP中制作动态图表
2020/05/30 Javascript
[51:29]Alliance vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
Python中的迭代器与生成器高级用法解析
2016/06/28 Python
Python动刷新抢12306火车票的代码(附源码)
2018/01/24 Python
python版本单链表实现代码
2018/09/28 Python
详解python中的数据类型和控制流
2019/08/08 Python
python多线程同步之文件读写控制
2021/02/25 Python
pyqt5、qtdesigner安装和环境设置教程
2019/09/25 Python
千禧酒店及度假村官方网站:Millennium Hotels and Resorts
2019/05/10 全球购物
Linux文件系统类型
2012/09/16 面试题
介绍一下EJB的分类及其各自的功能及应用
2016/08/23 面试题
工作态度检讨书
2014/02/11 职场文书
维稳工作情况汇报
2014/10/27 职场文书
2014年安全工作总结范文
2014/11/13 职场文书
校长师德表现自我评价
2015/03/04 职场文书
Python趣味挑战之给幼儿园弟弟生成1000道算术题
2021/05/28 Python
Python+Selenium实现读取网易邮箱验证码
2022/03/13 Python
“鬼灭之刃”热度不减,其成功背后的原因是什么?
2022/03/22 日漫