使用OpenCV和Python高效计算视频的总帧数

使用OpenCV和Python高效计算视频的总帧数,第1张

概述使用OpenCV和Python高效计算视频的总帧数1.效果图2.源码参考这篇博客将介绍两种使用OpenCV和Python计算视频文件中帧数的方法。超级快,它依靠OpenCV的视频属性功能,能够(几乎)立即确定视频文件中的帧数。但是由于依赖(安装的OpenCV+视频编解码器版本),此方法很容易出错,

使用OpenCV和Python高效计算视频的总帧数1. 效果图2. 源码参考

这篇博客将介绍两种使用OpenCV和Python计算视频文件中帧数的方法。

超级快,它依靠OpenCV的视频属性功能,能够(几乎)立即确定视频文件中的帧数。但是由于依赖(安装的OpenCV +视频编解码器版本),此方法很容易出错,甚至可能返回无意义的结果。

在这种情况下,需要使用第二种方法:手动计算视频中的帧总数。

手动计算视频中的帧数。尽管速度极慢,但此方法具有100%准确的优点。

计算可参考 imutils 库中的count_frames函数。该函数将首先尝试方法1,如果失败,将自动恢复为方法2。

使用过程中如果更偏向准确性,则使用方法2,如果偏向近似值和速度,则使用方法1;

1. 效果图

opencv自带的高效计数如图所示:

python count_frames.py --vIDeo vIDeos/jurassic_park_trailer.mp4
[INFO] 4,790 total frames read from jurassic_park_trailer.mp4

低效的手动计数如图所示:

python frame_counter.py --vIDeo vIDeos/jurassic_park_trailer.mp4 --overrIDe 1
[INFO] 4,978 total frames read from jurassic_park_trailer.mp4

为什么帧计数不一致?
一切都归结为快速和近似与缓慢但准确的关系。

使用OpenCV的视频捕获属性,可以非常快速地获得总帧数,但它可能不会100%有效。而且可能完全由于OpenCV /视频编解码器版本控制而使这种方法失败。使用手动计算帧数,则将花费很长时间,但是返回的帧总数将是准确的。

如果需要绝对准确的计数,请使用方法2。
如果需要大致的近似值,请使用方法1(除非失败,否则无论如何您都将恢复为方法2)。

2. 源码
@H_404_81@# USAGE# time python frame_counter.py --vIDeo vIDeos/example.mp4 --overrIDe 1# time python frame_counter.py --vIDeo vIDeos/example.mp4# 导入必要的包# 如果返回的总帧数为0,则99%是以下俩个原因,1)视频文件的路径不对;2)安装的视频编解码器不对,解决办法:安装合适的视频编解码器,并重新编译安装opencv;from imutils.vIDeo import count_framesimport argparseimport os# 构建命令行参数及解析# -vIDeo 视频文件路径# -overrIDe 是否使用手动计帧数ap = argparse.ArgumentParser()ap.add_argument("-v", "--vIDeo", required=True,                help="path to input vIDeo file")ap.add_argument("-o", "--overrIDe", type=int, default=-1,                help="whether to force manual frame count")args = vars(ap.parse_args())# 计算视频文件的总帧数overrIDe = False if args["overrIDe"] < 0 else Truetotal = count_frames(args["vIDeo"], overrIDe=overrIDe)# 展示帧总数在终端上print("[INFO] {:,} total frames read from {}".format(total,                                                     args["vIDeo"][args["vIDeo"].rfind(os.path.sep) + 1:]))
参考https://www.pyimagesearch.com/2017/01/09/count-the-total-number-of-frames-in-a-video-with-opencv-and-python/ 总结

以上是内存溢出为你收集整理的使用OpenCV和Python高效计算视频的总帧数全部内容,希望文章能够帮你解决使用OpenCV和Python高效计算视频的总帧数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/langs/1188957.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存