【问题标题】:Python OpenCV video recording fast-forwardingPython OpenCV 视频录制快进
【发布时间】:2017-04-12 15:58:24
【问题描述】:

我制作了一个简短的脚本,它是魔方计时器的开始,但是当我播放录制的视频时,它的速度非常快。

我的网络摄像头是'Creative Labs Live! Cam Chat HD',分辨率为 1280*720 像素,旁注;当我尝试在该分辨率下运行脚本编码时,播放失败,帧率为 30 fps。

下面是代码和演示效果的视频链接。

from time import clock as t
import time
import cv2
import numpy as np
cap = cv2.VideoCapture(0)
fourcc = cv2.VideoWriter_fourcc(*"XVID")
out = cv2.VideoWriter("output.avi", fourcc, 30.0, (640, 480))
timing = False

while True:
    ret, frame = cap.read()
    #frame = cv2.flip(frame, 1)
    cv2.imshow("frame", frame)

    if timing:
        out.write(frame)

    if cv2.waitKey(1) & 0xFF == ord(" "):
        if timing:
            after = t()
            break
        else:
            timing = True
            start = t()

cap.release()
out.release()
cv2.destroyAllWindows()

print(after - start)

Example of the accelerated video.

【问题讨论】:

  • 首先,将硬编码的 30 fps 更改为 20 fps,然后告诉我们结果

标签: python opencv video


【解决方案1】:

您正在以 30 fps 的速度写入输出,而您的网络摄像头可能没有以 30 fps 的速度录制。这就是为什么您的视频速度很快。找到合适的fps,输出就正常了。

为 opencv >=3 找到类似 fps=cap.get(cv2.CAP_PROP_FPS) 的帧率

【讨论】:

  • 我试过了,但它不起作用,因为我的网络摄像头确实以 30fps 运行。这也是我最初的想法。
【解决方案2】:

我遇到了同样的问题。我认为这是由写入操作引起的。您尝试以 30fps 的速度保存视频,但写入操作无法处理。例如,您想以 30fps 保存 180 帧,该视频应为 6 秒。但是写动作每秒只能保存10帧,所以每秒会丢20帧。但是视频仍然以 30fps 的速度播放,所以 6 秒的视频变成了 2 秒。似乎更快。

【讨论】:

  • 为什么你认为写操作有这么低的限制?你如何提高它?编辑:如果你还没有发现,不用担心,这个项目很久以前就死了,我只是好奇。
猜你喜欢
  • 2021-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-03
  • 1970-01-01
  • 1970-01-01
  • 2013-07-08
相关资源
最近更新 更多