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内置的HTTP协议服务器SimpleHTTPServer使用指南
Mar 30 Python
Python与Java间Socket通信实例代码
Mar 06 Python
Python实现网站注册验证码生成类
Jun 08 Python
python 简单备份文件脚本v1.0的实例
Nov 06 Python
Python用户推荐系统曼哈顿算法实现完整代码
Dec 01 Python
python3.6.3安装图文教程 TensorFlow安装配置方法
Jun 24 Python
使用Python的OpenCV模块识别滑动验证码的缺口(推荐)
May 10 Python
python自带tkinter库实现棋盘覆盖图形界面
Jul 17 Python
利用python-docx模块写批量生日邀请函
Aug 26 Python
详解Python实现进度条的4种方式
Jan 15 Python
k-means 聚类算法与Python实现代码
Jun 01 Python
解决pip安装的第三方包在PyCharm无法导入的问题
Oct 15 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中的日期及时间
2006/11/23 PHP
基于PHP创建Cookie数组的详解
2013/07/03 PHP
php使用curl出现Expect:100-continue解决方法
2015/03/03 PHP
PHP标准类(stdclass)用法示例
2016/09/28 PHP
jQuery ul标签下拉菜单演示代码
2010/12/11 Javascript
Javascript合并表格中具有相同内容单元格示例
2013/08/11 Javascript
使用jquery实现以post打开新窗口
2014/03/19 Javascript
node.js中的http.response.getHeader方法使用说明
2014/12/14 Javascript
深入理解JavaScript系列(43):设计模式之状态模式详解
2015/03/04 Javascript
js实现图片轮播效果
2015/12/19 Javascript
EasyUI为Numberbox添加blur事件的方法
2017/03/05 Javascript
jQuery插件HighCharts绘制的2D堆柱状图效果示例【附demo源码下载】
2017/03/14 Javascript
详解angular用$sce服务来过滤HTML标签
2017/04/11 Javascript
JavaScript算法学习之冒泡排序和选择排序
2019/11/02 Javascript
vue 在单页面应用里使用二级套嵌路由
2020/12/19 Vue.js
[56:01]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 Effect vs EG
2018/03/31 DOTA
python进阶教程之模块(module)介绍
2014/08/30 Python
浅谈python数据类型及类型转换
2017/12/18 Python
python实现从pdf文件中提取文本,并自动翻译的方法
2018/11/28 Python
python计算n的阶乘的方法代码
2019/10/25 Python
使用 django orm 写 exists 条件过滤实例
2020/05/20 Python
sklearn线性逻辑回归和非线性逻辑回归的实现
2020/06/09 Python
全方位了解CSS3的Regions扩展
2015/08/07 HTML / CSS
英国山地公路自行车商店:Tweeks Cycles
2018/03/16 全球购物
mysql的最长数据库名,表名,字段名可以是多长
2014/04/21 面试题
this关键字的含义
2015/04/08 面试题
写自荐信有哪些不宜?
2013/10/17 职场文书
护理个人求职信范文
2014/01/08 职场文书
最新茶叶店创业计划书
2014/01/14 职场文书
企业员工培训感言
2014/02/26 职场文书
学习雷锋演讲稿
2014/05/10 职场文书
2014年安全生产目标责任书
2014/07/23 职场文书
美甲店的创业计划书模板
2019/08/23 职场文书
win11怎么用快捷键锁屏? windows11锁屏的几种方法
2021/11/21 数码科技
mysql数据库隔离级别详解
2022/06/16 MySQL
html中两种获取标签内的值的方法
2022/06/16 jQuery