首页 > 其他分享 >【脚本】统计视频的帧数、fps、时长、以固定fps进行采样后的时长

【脚本】统计视频的帧数、fps、时长、以固定fps进行采样后的时长

时间:2023-09-28 18:03:13浏览次数:49  
标签:采样 cnt vvv totalFrameNumber second fps total 时长

输入:存放有很多视频文件的文件夹路径

输出:包含采样前后视频信息的csv文件

import os
import cv2
import pandas as pd
import numpy as np
from PIL import Image

def get_videos(vidname, read_path):
    allframes = []
    videoins = read_path + vidname
    vvv = cv2.VideoCapture(videoins)
    if not vvv.isOpened():
        print('Video is not opened! {}'.format(videoins))
    else:
        fps = vvv.get(cv2.CAP_PROP_FPS)
        sampleFps = 10  ########################### 设定固定fps 10
        totalFrameNumber = vvv.get(cv2.CAP_PROP_FRAME_COUNT)
        size = (int(vvv.get(cv2.CAP_PROP_FRAME_WIDTH)), int(vvv.get(cv2.CAP_PROP_FRAME_HEIGHT)))
        second = totalFrameNumber//fps

        selectNum = second * sampleFps
        skipNum = (totalFrameNumber-selectNum)/selectNum
        skipNum = int(skipNum)+1 # 向下取整
        '''
        if totalFrameNumber != 0:
            for _ in range(int(totalFrameNumber)):
                rval, frame = vvv.read()
                if frame is not None:
                    img = Image.fromarray(frame.astype('uint8')).convert('RGB')
                    imgtrans = centrans(img).numpy()
                    allframes.append(imgtrans)
        '''
        if totalFrameNumber != 0:
            cnt = 0
            cnt_total = 0
            for _ in range(int(totalFrameNumber)):
                rval, frame = vvv.read()
                if frame is not None:
                    if cnt >= skipNum:
                        cnt_total += 1
                        cnt = 0
                    cnt += 1

        #print("select num ",cnt_total)
        #print("total num ",totalFrameNumber)
        #print("second", second)
        #print("fps ",fps)
    return fps,second,int(totalFrameNumber),cnt_total


if __name__ == "__main__":

    savepath = '/test_npy_10fps/'
    datapath = '/THUMOS/test/'
    os.chdir(datapath)
    allvideos = os.listdir()
    allvideos.sort()

    list_content = []
    for vid in range(len(allvideos)):
        fps,second,totalframeNum,cnt_total  = get_videos(allvideos[vid], datapath) 

        ############################################################################## 
        #list_content.append([allvideos[vid],totalframeNum,second,fps,10,"training",cnt_total])
        list_content.append([allvideos[vid],totalframeNum,second,fps,10,"validation",cnt_total])
        ##############################################################################

        print('%d video has been done!' % vid)
    data2 = pd.DataFrame(data = list_content,index = None,columns = ["video","numFrame","seconds","fps","rfps","subset","featureFrame"])
    
    # PATH为导出文件的路径和文件名
    #data2.to_csv("../train_info.csv")
    data2.to_csv("../test_info.csv")

    print('all %d video  have been done!' % len(allvideos)) 

标签:采样,cnt,vvv,totalFrameNumber,second,fps,total,时长
From: https://www.cnblogs.com/traceofMind/p/17736272.html

相关文章

  • 力扣-2798-满足目标工作时长的员工数目
    公司里共有n名员工,按从0到n-1编号。每个员工i已经在公司工作了hours[i]小时。公司要求每位员工工作至少target小时。给你一个下标从0开始、长度为n的非负整数数组hours和一个非负整数target。请你用整数表示并返回工作至少target小时的员工数。 示......
  • Java-统计程序运行的时长(计算两个时间相差的秒数)
    最近在做Hbase的查询性能验证,需要统计查询的执行时长,所以需要统计开始时间和结束时间的时间差。下面是使用SimpleDateFormat和Date计算时间差(相差秒数)的程序示例,仅供参考。packagecom.sgcc;importjava.text.ParseException;importjava.text.SimpleDateFormat;importjav......
  • Generative AI 新世界 | 扩散模型原理的代码实践之采样篇
    在上一期的文章中,探讨了在 AmazonSageMakerStudio上使用QLoRA等量化技术微调Falcon40B大语言模型。而从本期开始,我们将一起尝试在更深的知识维度,继续探究生成式AI这一火热的新知识领域。亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开......
  • R语言使用Metropolis-Hastings采样算法自适应贝叶斯估计与可视化|附代码数据
    原文链接:http://tecdat.cn/?p=19889原文出处:拓端数据部落公众号 最近我们被客户要求撰写关于Metropolis-Hastings采样的研究报告,包括一些图形和统计输出。如果您可以写出模型的似然函数,则 Metropolis-Hastings算法可以负责其余部分(即MCMC)。我写了r代码来简化对任意模型的后......
  • R语言中的block Gibbs吉布斯采样贝叶斯多元线性回归|附代码数据
    全文链接:http://tecdat.cn/?p=11617最近我们被客户要求撰写关于blockGibbs吉布斯采样的研究报告,包括一些图形和统计输出。在这篇文章中,我将对多元线性回归使用block的Gibbs采样,得出block的Gibbs采样所需的条件后验分布。然后,对采样器进行编码,并使用模拟数据对其进行测试 ( 点......
  • R语言贝叶斯推断与MCMC:实现Metropolis-Hastings 采样算法示例|附代码数据
    原文链接:http://tecdat.cn/?p=21545原文出处:拓端数据部落公众号 最近我们被客户要求撰写关于贝叶斯推断的研究报告,包括一些图形和统计输出。示例1:使用MCMC的指数分布采样任何MCMC方案的目标都是从“目标”分布产生样本。在这种情况下,我们将使用平均值为1的指数分布作为我们......
  • R语言贝叶斯MCMC:GLM逻辑回归、Rstan线性回归、Metropolis Hastings与Gibbs采样算法实
    原文链接:http://tecdat.cn/?p=23236 原文出处:拓端数据部落公众号最近我们被客户要求撰写关于贝叶斯MCMC的研究报告,包括一些图形和统计输出。什么是频率学派?在频率学派中,观察样本是随机的,而参数是固定的、未知的数量。概率被解释为一个随机过程的许多观测的预期频率。有一......
  • R语言RStan MCMC:NUTS采样算法用LASSO 构建贝叶斯线性回归模型分析职业声望数据|附代码
    原文链接:http://tecdat.cn/?p=24456原文出处:拓端数据部落公众号最近我们被客户要求撰写关于RStan的研究报告,包括一些图形和统计输出。如果你正在进行统计分析:想要加一些先验信息,最终你想要的是预测。所以你决定使用贝叶斯。但是,你没有共轭先验。你可能会花费很长时间编写Metr......
  • 带通信号采样
    奈奎斯特采样定律带通信号的采样......
  • App性能指标(安装、冷启动、卸载、平均内存/cpu/fps/net)测试记录
    【需求背景】需要针对产品以及竞品做出横向对比,输出对应的比对测试报告,供产研进行产品性能优化依据 【测试方案】对于主流的厂商和系统版本进行多维度的横向对比厂商:华为系、小米系、蓝绿系、三星系、苹果系、联想等系统:android10-14,ios11-16,鸿蒙2-3指标:安装时间、冷启动......