You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenCV设置100FPS录制无效?如何实现视频慢放?

问题分析与解决方案

操作中的核心问题

  • 相机未配置为100FPS捕获:仅修改VideoWriter的帧率参数没用,相机默认仍以低帧率(比如10FPS)输出帧,实际写入视频的帧数量远达不到100FPS要求。播放时用100FPS参数解析,自然会快进,且视频实际有效帧率还是相机的输出帧率。
  • 循环逻辑严重错误:代码里的else: break会让循环只执行一次就退出,根本没法连续捕获帧,属于明显的逻辑bug。
  • 未正确定义帧尺寸size:VideoWriter的尺寸参数必须和相机捕获的帧尺寸完全匹配,你没初始化这个变量,会直接导致写入失败或输出异常。
  • 未验证相机的100FPS支持性:相机标称支持100FPS,可能仅在特定低分辨率下生效,高分辨率下大概率达不到该帧率。

实现100FPS录制的修正步骤

  1. 配置相机捕获参数:先设置相机的FPS属性,同时调整分辨率(优先选低分辨率确保100FPS生效)。
  2. 修正循环逻辑:移除错误的else: break,让循环持续捕获帧直到按下s键。
  3. 动态获取帧尺寸:从相机读取实际的帧宽高,作为VideoWriter的尺寸参数。
  4. 验证实际捕获帧率:获取相机实际输出的FPS值,确认设置是否生效。

修正后的代码:

import cv2

# 初始化相机,使用CAP_DSHOW减少启动延迟
cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)

# 设置相机捕获帧率为100
cap.set(cv2.CAP_PROP_FPS, 100)
# 设置低分辨率以确保100FPS生效(根据相机支持情况调整)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)

# 获取相机实际的帧尺寸与帧率
frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
actual_fps = cap.get(cv2.CAP_PROP_FPS)
print(f"实际捕获帧率: {actual_fps}")

# 初始化VideoWriter,参数与相机匹配
result = cv2.VideoWriter('testVideo.avi', cv2.VideoWriter_fourcc(*'MJPG'), 100, (frame_width, frame_height))

while True:
    ret, frame = cap.read()
    if not ret:
        break  # 捕获失败则退出

    result.write(frame)
    cv2.imshow('Frame', frame)

    # 按下's'键停止录制
    if cv2.waitKey(1) & 0xFF == ord('s'):
        break

# 释放资源
cap.release()
result.release()
cv2.destroyAllWindows()

实现慢放的两种方法

方法1:修改视频元数据帧率(高效无编码)

如果已经录制好100FPS的视频,可通过修改视频的帧率元数据实现慢放。比如改成10FPS,播放时会自动慢放10倍,用ffmpeg可直接修改无需重新编码:

ffmpeg -i testVideo.avi -c copy -r 10 slow_video.avi

方法2:播放时实时控制延迟

用OpenCV播放视频时,通过调整waitKey的延迟时间实现慢放。100FPS的视频,每帧延迟100ms(对应10FPS),就能慢放10倍:

import cv2

cap = cv2.VideoCapture('testVideo.avi')
while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        break
    cv2.imshow('Slow Playback', frame)
    # 每帧延迟100ms,对应10FPS
    if cv2.waitKey(100) & 0xFF == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()

内容的提问来源于stack exchange,提问作者ortunoa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 15:35:20