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

OpenCV中cv2.VideoWriter报(-5:Bad argument)错误如何修复?

问题修复方案

错误原因

你混淆了OpenCV的两个核心API:

  • cv2.VideoWriter:用于将视频帧写入本地文件,必须传入输出路径、编码格式(fourcc)、帧率、分辨率等必填参数,不用于读取摄像头画面。
  • cv2.VideoCapture:用于从摄像头或本地视频文件读取帧,传入0即可调用系统默认摄像头,完全匹配你的需求。

修复后的代码

import cv2
import mediapipe as mp
import pandas as pd

# 替换为VideoCapture,读取默认摄像头
cap = cv2.VideoCapture(0)

while True:
    ret, frame = cap.read()
    if ret:
        cv2.imshow("image", frame)
        if cv2.waitKey(1) == ord('q'):
            break
        
cap.release()
cv2.destroyAllWindows()

补充:如果需要保存摄像头画面

如果后续要把摄像头录制的内容保存为视频文件,可以结合cv2.VideoWriter使用,示例如下:

import cv2
import mediapipe as mp
import pandas as pd

cap = cv2.VideoCapture(0)
# 获取摄像头的分辨率和设置帧率
fps = 30
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
# 设置视频编码格式(mp4格式用mp4v)
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
# 初始化VideoWriter,指定输出路径、编码、帧率、分辨率
out = cv2.VideoWriter('output.mp4', fourcc, fps, (width, height))

while True:
    ret, frame = cap.read()
    if ret:
        out.write(frame)  # 将当前帧写入视频文件
        cv2.imshow("image", frame)
        if cv2.waitKey(1) == ord('q'):
            break

# 释放资源顺序:先释放VideoWriter,再释放VideoCapture
out.release()
cap.release()
cv2.destroyAllWindows()

内容的提问来源于stack exchange,提问作者Thanh Nguyễn Hữu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 05:12:09