gpt4 book ai didi

python - 如何使用 python OpenCV 比文件帧速率更快地处理视频文件?

转载 作者:太空狗 更新时间:2023-10-29 21:39:43 24 4
gpt4 key购买 nike

我有一个视频文件,我试图一次处理一帧。我尝试使用 VideoCapture 类来阅读以下类型的代码。问题在于,如果视频文件以 25 帧/秒的速度录制,读取也会以相同的速度进行。如何以我的计算机可以解码的速度获取帧?

我打算处理视频流,然后将其存储到文件中。

import cv2
import sys
import time

cap = cv2.VideoCapture(sys.argv[1])
start = time.time()

counter = 0
while True:
counter += 1;
image = cap.read()[1]
if counter %25 == 0:
print "time", time.time() - start

输出:它每 25 帧打印一次时间戳。请注意时间戳如何在每一行几乎准确地改变 1 秒 => 程序每秒处理大约 25 帧。这是 25 帧/秒的视频文件。

time 1.25219297409
time 2.25236606598
time 3.25211691856
time 4.25237703323
time 5.25236296654
time 6.25234603882
time 7.252161026
time 8.25258207321
time 9.25195503235
time 10.2523479462

对于此类工作,VideoCapture 可能是错误的 API,但应该改用什么?

使用 Linux、Fedora 20、opencv-python 2.4.7 和 python 2.7.5。

最佳答案

如果编译 opencv 没有 ffmpeg 支持,我可以重现您描述的行为(即 cv::VideoCapture >> image 锁定到录制视频的帧速率) .如果我编译 opencv with ffmpeg 支持,我可以以我的计算机允许的速度从文件中读取图像。我认为在没有 ffmpeg 的情况下,opencv 使用 gstreamer 并且基本上将视频文件视为播放电影。

如果您使用的是 Linux,this link显示您必须安装哪些包才能获得 ffmpeg 对 opencv 的支持。

关于python - 如何使用 python OpenCV 比文件帧速率更快地处理视频文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28224280/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com