Python控制读取视频的帧率

参考

在利用 python 中的 cv2 模块处理视频时,想着能不能控制视频的读取帧率,因为想做状态检测相关的工作,大概每秒抓取一帧就行了,而原视频的帧率在 9fps, 如果对所有的帧都进行处理,会造成冗余计算。在寻找计算办法的时候,看到了这篇文章,觉得很有启发:
帧率控制

二、代码

代码如下:

import cv2

videoCapture = cv2.VideoCapture("视频文件存放路径")	# 读取视频文件
fps = videoCapture.get(cv2.CAP_PROP_FPS)	# 计算视频的帧率
print("fps:", fps)						
total = int(videoCapture.get(cv2.CAP_PROP_FRAME_COUNT))	  # 计算视频的总帧长 
print("[INFO] {} total frames in video".format(total))
success, img = videoCapture.read()	# 按帧读取视频,成功为sucess返回True,为img返回三维矩阵
frame_count = 0

# 精华部分
# 当成功读取到一帧后
while success:
	frame_count = frame_count + 1	# 已读取的帧数计算
	# 例: 每秒一帧:
	if frame_count % int(fps) == 0:  # 当累计帧数为你想要的帧率的倍数时,再进行图片处理操作!
	
		# 以下部分为对图片的处理计算操作:
		................
		................
		................
		videoWriter.write(img)	# 将每秒1帧处理的图像保存
		# 图片处理操作结束
		
	# 注意缩进	
    # 读取下一帧,实现更替
    success, img = videoCapture.read()
	

总结

主要思想就是控制对图片的处理操作,达到伪帧率的效果。利用 cv2.read()读取视频的每一帧,原本是每一帧都要处理,例如 9 帧 / s, 每秒就要处理九张图像。如果我们想每秒只处理三张图像,则可以在 frame_count % 3 == 0 时再对图片进行处理,就达到了 3帧 / s 的效果。

  • 7
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南风不竞:

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值