opencv读取视频文件夹内视频的名字_时长_帧率_分辨率写入excel-cnblog

看视频的时候有的视频文件名贼长。想要翻看,在文件夹里根本显示不出来,缩短又会丢失一些信息,所以我写了一份Python代码,直接获取视频的名字,时长,帧率,还有分辨率写到excel里。

实际效果如下图。

image-20240709212219287

可以看到需要的大致信息都被提取出来了

接下来直接上代码

import os
import xlsxwriter as xw
import cv2# 从文件中获取视频名称列表和视频网址列表
def getUrlName(filename):_urlList = []  # 视频网址列表_fileList = []  # 视频名称列表# 读取文件内容,并分离视频名称和网址with open(filename, 'r', encoding='utf-8') as f:data = f.readlines()for i in range(len(data)):if i % 2 == 0:  # 偶数行为视频名称_fileList.append(data[i].strip('\n'))else:  # 奇数行为视频网址_urlList.append(data[i].strip('\n'))return _urlList, _fileList# 获取单个视频文件的时长
def getFileDuration(filename):file_time = 0  # 初始化视频时长cap = cv2.VideoCapture(filename)  # 打开视频文件if cap.isOpened():  # 如果视频成功打开rate = cap.get(cv2.CAP_PROP_FPS)  # 获取视频帧率# 视频的宽高(分辨率)video_width = cap.get(cv2.CAP_PROP_FRAME_WIDTH)video_height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)frame_num = cap.get(cv2.CAP_PROP_FRAME_COUNT)  # 获取视频总帧数duration = int(frame_num / rate)  # 计算视频时长(秒)minutes = duration // 60  # 计算分钟数sec = duration % 60  # 计算剩余秒数res = "{:02d}:{:02d}".format(minutes, sec)  # 格式化时长为分钟:秒cap.release()  # 释放视频文件return res, rate,video_width,video_height  # 返回视频时长else:return file_time, file_time,file_time,file_time  # 如果视频打开失败,返回0# 获取指定文件夹内的所有文件名
def getAllFiles(_dirName):# print(os.listdir(_dirName))return os.listdir(_dirName)  # 返回文件夹内的文件列表# 使用xlsxwriter库将视频名称和时长列表写入Excel文件
def xw_toExcel(_fileList, _durationList,rates,w,h, fileName):workbook = xw.Workbook(fileName)  # 创建一个新的Excel工作簿worksheet1 = workbook.add_worksheet("sheet1")  # 在工作簿中添加一个名为"sheet1"的工作表worksheet1.activate()  # 激活工作表,准备写入数据title = ['序号', '视频名', '视频时长', '帧率',"分辨率"]  # 定义表头标题worksheet1.write_row('A1', title)  # 从A1单元格开始写入表头标题i = 2  # 设置数据写入的起始行号为2(即Excel中的第三行)for j in range(len(_fileList)):insertData = [j + 1, _fileList[j], _durationList[j],rates[j],"{}x{}".format(w[j],h[j])]  # 准备要写入的数据:序号、视频名、视频时长row = 'A' + str(i)  # 构建写入数据的行地址,例如'A2'、'A3'等worksheet1.write_row(row, insertData)  # 将数据写入到指定行i += 1  # 行号递增,准备写入下一行数据workbook.close()  # 完成数据写入后关闭工作簿# 程序的主函数
def main(SPWZ, folder_name):fileName = getAllFiles(SPWZ)  # 获取指定文件夹内的所有文件名print(fileName)duration = []  # 初始化视频时长列表rates = []  # 初始化帧率w = []h = []for item in fileName:  # 遍历每个文件a, b,c,d = getFileDuration(SPWZ + "/" + item)  # 获取每个视频文件的时长duration.append(a)  # 将时长添加到时长列表中rates.append(b)  # 将帧率添加到时长列表中w.append(c)h.append(d)# 将视频名称和时长写入Excel文件xw_toExcel(fileName, duration, rates, w,h,folder_name + '.xlsx')  # 调用xw_toExcel函数,写入数据到'test.xlsx'文件中if __name__ == '__main__':SPWZ = input("请输入要加载的视频位置:")SPWZ = SPWZ.replace('\\', '/')print(SPWZ)folder_name = os.path.basename(SPWZ)main(SPWZ, folder_name)

介绍一下这套代码的使用流程

image-20240709212322255

运行之后它会提示要加载的视频位置在哪里,输入之后回车生成的Excel文件会以那个文件夹命名

注意这需要open CV库的支持,要学会如何安装Python的库。
解决不了的加

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/869222.shtml

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

相关文章

打造个性化科学工具箱:使用conda-build自定义软件包

打造个性化科学工具箱:使用conda-build自定义软件包 引言 Conda是一个强大的包管理系统,广泛用于Python社区,尤其在数据科学和机器学习领域。除了安装现成的包,Conda还允许用户通过conda-build工具构建和分享自己的软件包。本文…

imx6ull/linux应用编程学习(15) 移植MQTT客户端库

1. 准备开发环境 确保你的Ubuntu系统已经安装了必要的工具和依赖项。打开终端并运行以下命令: sudo apt update sudo apt install build-essential cmake git2. 获取MQTT库 git clone https://github.com/eclipse/paho.mqtt.c.git cd paho.mqtt.c3. 编译MQTT库 mk…

NI SCXI-1001 模块处理器控制器

NI SCXI-1001 一款小巧紧凑的传感器,可提供准确可靠的测量。它具有四个通道,允许同时进行多个测量。该传感器设计用于各种传感器,包括热电偶,rtd和应变片。 NI SCXI-1001 特征: 高密度设计:实现大量开关…

教程系列1 | 趋动云『社区项目』极速部署 SD WebUI

在上周,趋动云新推出的『社区项目』功能,以“一键克隆”的极致便捷与“省时省力”的高效体验,赢得了广大用户的关注。 随后,启动趋动云『社区项目』教程系列,旨在从零开始,全方位、手把手地引领您深入探索…

Pandas在生物信息学中的应用详解

Pandas在生物信息学中的应用详解 引言 生物信息学作为一门将计算机科学和生物学相结合的跨学科领域,正随着高通量实验技术的飞速发展而日益重要。Pandas,作为Python中一个强大的数据处理库,为生物信息学研究提供了便捷高效的数据处理和分析…

实现双向循环链表的 创建、判空、尾插、遍历、尾删、销毁

#include "link.h"//create DoubleLink head node DoubleLink_p DoubleLink_create() {DoubleLink_p H (DoubleLink_p)malloc(sizeof(DoubleLink));if(NULL H){printf("失败");return NULL;}H -> len 0;H -> next H;H -> prior H;printf(&qu…

044基于SSM+Jsp的个性化影片推荐系统

开发语言:Java框架:ssm技术:JSPJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包…

安装nodejs | npm报错

nodejs安装步骤: 官网:https://nodejs.org/en/ 在官网下载nodejs: 双击下载下来的msi安装包,一直点next,我选的安装目录是默认的: 测试是否安装成功: 输入cmd打开命令提示符,输入node -v可以看到版本,说…

vue项目中使用svg图标/插件svg-sprite-loader

项目中为了体验好、性能优、资源丰富等原因经常会用svg这种矢量图,但是svg不能直接像image标签一样直接使用,这就需要前端的同学自己处理了。 svg有以下优点: svg放大不失真,png,jpg会出现失真现象 svg的体积非常小,对…

JVM原理(二四):JVM虚拟机锁优化

高效并发是从JDK 5升级到JDK 6后一项重要的改进项,HotSpot虛 拟机开发团队在这个版本上花费了大量的资源去实现各种锁优化技术,如适应性自旋( Adaptive Spinning)、锁消除( Lock Elimination)、锁膨胀(Lock Coarsening)、轻量级锁(Lightweight Locking)、…

代码随想录打卡第十八天

代码随想录–二叉树部分 day 17 休息日 day 18 二叉树第五天 文章目录 代码随想录--二叉树部分一、力扣654--最大二叉树二、力扣617--合并二叉树三、力扣700--二乘树中的搜素四、力扣98--验证二叉搜索树 一、力扣654–最大二叉树 代码随想录题目链接:代码随想录 给…

初识CPlusPlus

前言 也是好久没写博客了,那些天也没闲着,去练题去了。实际上练题也可以写练题的博客,但是觉得太简单了些,于是就没有继续写下去。如今又回来写博客,是因为有整理了新的知识C。内容不算多,大多数都是书本上…

【C++ 】中类的成员函数和析构函数的作用

在C中,类的成员函数和析构函数各自扮演着不同的角色,它们对于类的对象的生命周期管理和行为实现至关重要。 成员函数 成员函数是类的一部分,它们允许你定义类的行为,包括但不限于: 操作数据成员:成员函数…

Spring-事务(三)

作者:月下山川 公众号:月下山川 1、什么是事务 数据库事务( transaction)是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的…

证件照片换背景底色 免费 证件照片制作软件免费下载 证件照换衣服软件免费有哪些好用

证件照是我们身份认证的重要凭证,其质量和专业性都很重要。然而,很多时候,由于各种原因,我们可能无法在拍摄证件照时穿上合适的服装,这就给证件照的质量和形象带来了一定的影响。幸运的是,现在市面上出现了…

【保姆级介绍下C语言中的运算符的优先级】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步! 🧇C语言中的运算符的优先级 🧇C语言中的运算符的优先级决定了表达…

DOM(文档对象模型)生命周期事件

前言 DOM 生命周期事件涉及到从创建、更新到销毁 DOM 元素的不同阶段。 ● 我们来看下当HTML文档加载完再执行JavaScript代码 document.addEventListener(DOMContentLoaded, function (e) {console.log(HTML parsed adn DOM tree built!, e); })● 除此之外,浏览…

Codeforces Round 925 (Div. 3) D-F

Divisible Pairs 你有两个整数 x , y x,y x,y 和一个长为 n n n 的数组 a a a。 你需要求出有多少个正整数对 ( i , j ) (i,j) (i,j) 满足&#xff1a; 1 ≤ i < j ≤ n 1 \le i < j \le n 1≤i<j≤n a i a j a_i a_j ai​aj​ 可被 x x x 整除 a i − a j a…

使用ADB命令控制logcat日志本地存储功能

使用ADB命令控制logcat日志本地存储功能 1. 需求背景 在 Android 系统上进行开发调试时&#xff0c;为了分析 bug&#xff0c;很多场景需要抓取开机log。 使用GUI界面的工程模式/开发者选项可以打开 logcat 日志的本地存储功能&#xff0c;从而可以很方便的抓取完整的开机日…

单链表(C语言详细版)

1. 链表的概念及结构 概念&#xff1a;链表是一种物理存储结构上非连续、非顺序的存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的指针链接次序实现的。 链表的结构跟火车车厢相似&#xff0c;淡季时车次的车厢会相应减少&#xff0c;旺季时车次的车厢会额外增加几节。…