当前位置: 首页 > news >正文

Python Opencv实践 - 视频文件操作

参考资料:

视频处理VideoCapture类---OpenCV-Python开发指南(38)_python opencv videocapture_李元静的博客-CSDN博客

OpenCV VideoCapture.get()参数详解 - 简书
FOURCC四字符码对照表_4fvcc_Kellybook的博客-CSDN博客

import cv2 as cv
import numpy as np#1.创建VideoCapture对象
#  video = cv.VideoCapture(filePath)
#  filePath: 视频文件路径
# 参考资料:https://blog.csdn.net/liyuanjinglyj/article/details/114374223
video = cv.VideoCapture("../SampleVideos/Unity2D.mp4")
print("Video Opened?", video.isOpened())#2.获得视频属性
#  video.get(propId)
#  propId: 属性ID
#          cv.CAP_PROP_POS_MSEC - 视频文件的当前位置(ms)
#          cv.CAP_PROP_POS_FRAMES - 当前帧序号(从0开始)
#          cv.CAP_PROP_POS_AVI_RATIO - 视频文件相对位置(0表示开始,1表示结束)
#          cv.CAP_PROP_FRAME_WIDTH - 视频的帧宽度
#          cv.CAP_PROP_FRAME_HEIGHT - 视频的帧高度
#          cv.CAP_PROP_FPS - 帧率
#          cv.CAP_PROP_FOURCC - 视频编码的四字节编码
#          cv.CAP_PROP_FRAME_COUNT - 视频文件的帧的数量
#          cv.CAP_PROP_FORMAT - 对象的格式
#  参考资料:https://www.jianshu.com/p/676bef32e655
#           https://blog.csdn.net/qq_30622831/article/details/82082122
width = video.get(cv.CAP_PROP_FRAME_WIDTH)
height = video.get(cv.CAP_PROP_FRAME_HEIGHT)
fps = video.get(cv.CAP_PROP_FPS)
fourcc = int(video.get(cv.CAP_PROP_FOURCC))
totalFrames = video.get(cv.CAP_PROP_FRAME_COUNT)
print("Video Properties: resolution - (", width, height, ") FPS - ", fps, " FOURCC - ", chr(fourcc&0xFF), chr((fourcc>>8)&0xFF), chr((fourcc>>16)&0xFF),chr((fourcc>>24)&0xFF), " Frame Count - ", totalFrames)#3. 读取视频的一帧图像
#    ret,frame = video.read()
#    read()按帧读取视频,ret,frame是获cap.read()方法的两个返回值
#          其中ret读取帧是正确的话则返回True,如果文件读取到结尾,它的返回值就为False
frame_delay = int(1000 / fps)
while True:ret,frame = video.read()cv.imshow('Opencv Video Play', frame)key = cv.waitKey(frame_delay)if key == 27: #检测ESC键break
#4. 释放视频对象
video.release()
cv.destroyAllWindows()

http://www.lryc.cn/news/168142.html

相关文章:

  • HCS 中的一些概念(二)
  • Scanner类用法(学习笔记)
  • idea2021.1.3版本双击启动,没反应
  • MC-4/11/01/400 ELAU 软件允许用户完全访问相机设置
  • Error contacting service. It is probably not running.问题解决
  • 01_网络编程_传统IO
  • vue 检查指定路由是否存在
  • 自动化办公更简单了:新版python-office,有哪些更新?
  • windows flask服务卡死的问题
  • 项目上线部署--》服务器部署流程(一)
  • Python:函数调用的实参
  • 174. 地下城游戏 -- 动规
  • js实现websocket服务端和客户端
  • qt qml RadioButton如何设置字体颜色,style提示找不到怎么办?
  • Docker 的使用
  • 【无公网IP内网穿透】Java支付宝沙箱环境支付,SDK接口远程调试
  • axios 用formData的方式请求数据
  • Mapbox加载arcgis的底图
  • (20)线程安全问题:Lock,双锁问题,Monitor,死锁
  • 医院如何实现安全又稳定的跨网文件数据交换呢?
  • 关于老项目从JDK8升级到JDK17所需要注意的细节
  • 《C++ primer》练习3.43-3.45: 打印二维数组的元素
  • 使用电力系统稳定器 (PSS) 和静态 VAR 补偿器 (SVC) 提高瞬态稳定性(Matlab代码实现)
  • 开源项目-SeaTunnel-UI数据集成系统
  • 百度SEO优化策略与经验分享(提升百度排名的8大步骤)
  • 【深度学习】- NLP系列文章之 1.文本表示以及mlp来处理分类问题
  • 力扣236 补9.14
  • 一文搞定Postman(菜鸟必看)
  • 位图+布隆过滤器+海量数据并查集(它们都是哈希的应用)
  • MYSQL:Select语句顺序