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.hqwc.cn/news/110307.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

02目标检测-传统检测方法

目录 一、目标学习的检测方法变迁及对比 二、 基于传统手工特征的检测算法的定义 三、传统主要手工特征与算法 Haar特征与 人脸检测算法 - Viola-Jones(了解) HOG特征与 SVM 算法(了解)(行人检测、opencv实现) SIFT特征与SIFT算法(了解) DPM&#…

Python中异常处理4-4

在Python中的异常处理4-1_棉猴的博客-CSDN博客中提到,在try块中的代码运行时如果出现异常,会自动抛出这个异常。可以通过raise语句手动抛出异常。 1 raise语句手动抛出异常 raise后面跟要抛出的异常类或者异常类的实例,表示手动抛出该异常&…

看好多人都在劝退学计算机,可是张雪峰又 推荐过计算机,所以计算机到底是什么样 的?

张雪峰高考四百多分,但是他现在就瞧不起400多分的学生。说难听点,六七百分的 热门专业随便报谁不会啊? 计算机专业全世界都是过剩的,今年桂林电子科技,以前还是华为的校招大学,今年 计算机2/3待业。这个世…

听GPT 讲Istio源代码--istioctl

在 Istio 项目的 istioctl 目录中,有一些子目录,每个目录都有不同的作用和功能。以下是这些子目录的详细介绍: /pkg: pkg 目录包含了 istioctl 工具的核心代码和库。这些代码和库提供了与 Istio 控制平面交互的功能,例如获取和修改…

java:逆序排序的三种方法

// 逆序第一种方法 public static void main(String[] args) {int arr[] {11, 22, 33, 44, 55, 66};for (int i arr.length-1; i > 0; i--) {System.out.print("\t"arr[i]);}}缺点:这个是直接逆转,如果里面是随机数没办法比较 逆序第二种…

PostGreSQL:时间戳时区问题

时间|日期类型 PostGreSQL数据库内置的时间类型如下,注意到:内置的时间类型被分为了with time zone-带时区、without time zone-不带时区两种类型, time、timestamp和interval都可以接受一个可选的精度值 p(取值:0-6&a…

ChatGLM2-6B Lora 微调训练医疗问答任务

一、ChatGLM2-6B Lora 微调 LoRA 微调技术的思想很简单,在原始 PLM (Pre-trained Language Model) 增加一个旁路,一般是在 transformer 层,做一个降维再升维的操作,模型的输入输出维度不变,来模拟 intrinsic rank&…

pytorch代码实现之动态卷积模块ODConv

ODConv动态卷积模块 ODConv可以视作CondConv的延续,将CondConv中一个维度上的动态特性进行了扩展,同时了考虑了空域、输入通道、输出通道等维度上的动态性,故称之为全维度动态卷积。ODConv通过并行策略采用多维注意力机制沿核空间的四个维度…

【JavaSE笔记】抽象类与接口

一、抽象类 1、概念 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。 package demo2…

气传导耳机哪个好?值得推荐的气传导耳机分享

​随着生活节奏的加快,人们越来越关注听力健康。气传导耳机以其独特的传导方式和舒适的佩戴感受,逐渐成为耳机市场的新宠。气传导耳机不入耳设计听音,让你在享受音乐的同时,也能保护你的听力安全。今天我们就一起来看看几款值得大…

饲料添加剂 微生物 屎肠球菌

声明 本文是学习GB 7300.503-2023 饲料添加剂 第5部分:微生物 屎肠球菌. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本文件规定了饲料添加剂屎肠球菌的技术要求、采样、检验规则、标签、包装、运输、贮存和保质 期&#xff0…

【vue】vue 中插槽的三种类型:

文章目录 一、匿名插槽&#xff1a;二、具名插槽&#xff1a;三、作用域插槽 一、匿名插槽&#xff1a;<slot></slot> 1.没有为插槽指定名称 2.通过slot标签可以添加匿名插槽 3.在使用组件的时候&#xff0c;组件中的内容会填充到所有匿名插槽的位置&#xff0c;所…