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 相关文章推荐
pycharm 使用心得(七)一些实用功能介绍
Jun 06 Python
Python实现的多线程http压力测试代码
Feb 08 Python
Django 使用logging打印日志的实例
Apr 28 Python
Python Grid使用和布局详解
Jun 30 Python
flask框架实现连接sqlite3数据库的方法分析
Jul 16 Python
python 读取鼠标点击坐标的实例
Dec 29 Python
Python3 实现爬取网站下所有URL方式
Jan 16 Python
使用tensorflow显示pb模型的所有网络结点方式
Jan 23 Python
在tensorflow中实现屏蔽输出的log信息
Feb 04 Python
Python函数基本使用原理详解
Mar 19 Python
PyInstaller运行原理及常用操作详解
Jun 13 Python
Python3使用 GitLab API 进行批量合并分支
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
用Flash图形化数据(一)
2006/10/09 PHP
web目录下不应该存在多余的程序(安全考虑)
2012/05/09 PHP
彻底搞懂PHP 变量结构体
2017/10/11 PHP
laravel Validator ajax返回错误信息的方法
2019/09/29 PHP
Thinkphp5 如何隐藏入口文件index.php(URL重写)
2019/10/16 PHP
小议Function.apply() 之一------(函数的劫持与对象的复制)
2006/11/30 Javascript
用javascript动态调整iframe高度的代码
2007/04/10 Javascript
javascript 面向对象编程 万物皆对象
2009/09/17 Javascript
myeclipse安装jQuery插件的方法
2011/03/29 Javascript
js原生态函数中使用jQuery中的 $(this)无效的解决方法
2011/05/25 Javascript
jquery 合并内容相同的单元格(示例代码)
2013/12/13 Javascript
Windows8下搭建Node.js开发环境教程
2014/09/03 Javascript
用svg制作富有动态的tooltip
2015/07/17 Javascript
详解plotly.js 绘图库入门使用教程
2018/02/23 Javascript
使用electron实现百度网盘悬浮窗口功能的示例代码
2018/10/24 Javascript
微信小程序使用GoEasy实现websocket实时通讯
2020/05/19 Javascript
python实现文件名批量替换和内容替换
2014/03/20 Python
python微信跳一跳系列之棋子定位颜色识别
2018/02/26 Python
Python 创建空的list,以及append用法讲解
2018/05/04 Python
使用pycharm生成代码模板的实例
2018/05/23 Python
Python多线程同步---文件读写控制方法
2019/02/12 Python
Python输出指定字符串的方法
2020/02/06 Python
手摸手教你用canvas实现给图片添加平铺水印的实现
2019/08/20 HTML / CSS
Lulu Guinness露露·吉尼斯官网:红唇包
2019/02/03 全球购物
mysql的最长数据库名,表名,字段名可以是多长
2014/04/21 面试题
党校培训思想汇报
2013/12/30 职场文书
小组合作学习反思
2014/02/18 职场文书
实习生评语
2014/04/26 职场文书
群众路线对照检查材料
2014/09/22 职场文书
六年级学生期末评语
2014/12/26 职场文书
人民的好儿女观后感
2015/06/18 职场文书
英语导游欢迎词
2015/09/30 职场文书
班组长如何制订适合本班组的工作计划?
2019/07/10 职场文书
Go语言操作数据库及其常规操作的示例代码
2021/04/21 Golang
解决linux下redis数据库overcommit_memory问题
2022/02/24 Redis
Vertica集成Apache Hudi重磅使用指南
2022/03/31 Servers