OpenCV VideoCapture类 OpenCV中VideoCapture类的使用详解

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

OpenCV VideoCapture类 OpenCV中VideoCapture类的使用详解

chenzhen0530   2021-04-21 我要评论

主要记录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))

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们