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同时兼容python2和python3的8个技巧分享
Jul 11 Python
用实例详解Python中的Django框架中prefetch_related()函数对数据库查询的优化
Apr 01 Python
python 性能提升的几种方法
Jul 15 Python
理论讲解python多进程并发编程
Feb 09 Python
python3+PyQt5 自定义窗口部件--使用窗口部件样式表的方法
Jun 26 Python
python 使用opencv 把视频分割成图片示例
Dec 12 Python
Python grequests模块使用场景及代码实例
Aug 10 Python
python 使用tkinter+you-get实现视频下载器
Nov 17 Python
python-地图可视化组件folium的操作
Dec 14 Python
pycharm如何设置官方中文(如何汉化)
Dec 29 Python
OpenCV-Python实现怀旧滤镜与连环画滤镜
Jun 09 Python
用Python仅20行代码编写一个简单的端口扫描器
Apr 08 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 小乘法表实现代码
2009/07/16 PHP
基于在生产环境中使用php性能测试工具xhprof的详解
2013/06/03 PHP
php使用array_rand()函数从数组中随机选择一个或多个元素
2014/04/28 PHP
javascript数组与php数组的地址传递及值传递用法实例
2015/01/22 PHP
关于PHP 如何用 curl 读取 HTTP chunked 数据
2016/02/26 PHP
jquery 经典动画菜单效果代码
2010/01/26 Javascript
基于Jquery与WebMethod投票功能实现代码
2011/01/19 Javascript
js获取当前日期代码适用于网页头部
2013/06/27 Javascript
node.js中格式化数字增加千位符的几种方法
2015/07/03 Javascript
JavaScript设计模式经典之命令模式
2016/02/24 Javascript
JavaScript给每一个li节点绑定点击事件的实现方法
2016/12/01 Javascript
Cropper.js 实现裁剪图片并上传(PC端)
2017/08/20 Javascript
基于vue 开发中出现警告问题去除方法
2018/01/25 Javascript
微信小程序实现动态显示和隐藏某个控件功能示例
2018/12/14 Javascript
layui点击按钮页面会自动刷新的解决方案
2019/10/25 Javascript
解决vue中的无限循环问题
2020/07/27 Javascript
[59:15]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第一场 11.20
2020/11/20 DOTA
Python中文竖排显示的方法
2015/07/28 Python
python matplotlib画图库学习绘制常用的图
2019/03/19 Python
Python3 venv搭建轻量级虚拟环境的步骤(图文)
2019/08/09 Python
利用python实现AR教程
2019/11/20 Python
django序列化时使用外键的真实值操作
2020/07/15 Python
python中str内置函数用法总结
2020/12/27 Python
open_basedir restriction in effect. 原因与解决方法
2021/03/14 PHP
纯CSS实现右侧底部悬浮效果(悬浮QQ、微信、微博、邮箱等联系方式)
2015/04/24 HTML / CSS
SkinCeuticals官网:美国药妆品牌
2018/04/19 全球购物
迪卡侬比利时官网:Decathlon比利时
2019/12/28 全球购物
UDP协议功能
2013/01/06 面试题
小学少先队活动方案
2014/02/18 职场文书
小学英语课后反思
2014/04/26 职场文书
公益广告标语
2014/06/19 职场文书
2014年初一班主任工作总结
2014/11/08 职场文书
红与黑读书笔记
2015/06/29 职场文书
QT与javascript交互数据的实现
2021/05/26 Javascript
redis实现的四种常见限流策略
2021/06/18 Redis
Pygame Rect区域位置的使用(图文)
2021/11/17 Python