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 相关文章推荐
用ReactJS和Python的Flask框架编写留言板的代码示例
Dec 19 Python
python中的错误处理
Apr 10 Python
Python实现的异步代理爬虫及代理池
Mar 17 Python
python+opencv实现动态物体追踪
Jan 09 Python
解决Python安装后pip不能用的问题
Jun 12 Python
Python使用random.shuffle()打乱列表顺序的方法
Nov 08 Python
pandas 使用均值填充缺失值列的小技巧分享
Jul 04 Python
pytorch 预训练层的使用方法
Aug 20 Python
python excel转换csv代码实例
Aug 26 Python
Python2比较当前图片跟图库哪个图片相似的方法示例
Sep 28 Python
python3:excel操作之读取数据并返回字典 + 写入的案例
Sep 01 Python
Keras保存模型并载入模型继续训练的实现
Feb 20 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下使用strpos需要注意 === 运算符
2010/07/17 PHP
PHP与MongoDB简介|安全|M+PHP应用实例详解
2013/06/17 PHP
php实现的漂亮分页方法
2014/04/17 PHP
值得分享的php+ajax实时聊天室
2016/07/20 PHP
PHP的中使用非缓冲模式查询数据库的方法
2017/02/05 PHP
extjs form textfield的隐藏方法
2008/12/29 Javascript
预加载css或javascript的js代码
2010/04/23 Javascript
javascript模块化是什么及其优缺点介绍
2013/09/02 Javascript
JS中Date日期函数中的参数使用介绍
2014/01/02 Javascript
Jquery实现点击按钮,连续地向textarea中添加值的实例代码
2014/03/08 Javascript
javascript上下方向键控制表格行选中并高亮显示的方法
2015/02/13 Javascript
JavaScript中的Math.LN2属性用法详解
2015/06/12 Javascript
JavaScript SweetAlert插件实现超酷消息警告框
2016/01/28 Javascript
JavaScript实现拖拽元素对齐到网格(每次移动固定距离)
2016/11/30 Javascript
js实现的xml对象转json功能示例
2016/12/24 Javascript
jquery使用EasyUI Tree异步加载JSON数据(生成树)
2017/02/11 Javascript
vue、react等单页面项目应该这样子部署到服务器
2018/01/03 Javascript
Vuex 进阶之模块化组织详解
2018/01/12 Javascript
React 实现拖拽功能的示例代码
2019/01/06 Javascript
layui清空,重置表单数据的实例
2019/09/12 Javascript
浅析微信小程序modal弹窗关闭默认会执行cancel问题
2019/10/14 Javascript
vuex实现购物车的增加减少移除
2020/06/28 Javascript
python文件写入实例分析
2015/04/08 Python
python实现web方式logview的方法
2015/08/10 Python
你眼中的Python大牛 应该都有这份书单
2017/10/31 Python
Python中join函数简单代码示例
2018/01/09 Python
Python实现带参数与不带参数的多重继承示例
2018/01/30 Python
Django form表单与请求的生命周期步骤详解
2020/06/07 Python
matplotlib 生成的图像中无法显示中文字符的解决方法
2020/06/10 Python
Python基于time模块表示时间常用方法
2020/06/18 Python
python实现杨辉三角的几种方法代码实例
2021/03/02 Python
css3动画效果抖动解决方法
2018/09/03 HTML / CSS
优秀学生获奖感言
2014/02/15 职场文书
乡镇挂职心得体会
2014/09/04 职场文书
共产党员批评与自我批评
2014/10/15 职场文书
高中升旗仪式主持词
2015/07/03 职场文书