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
相关产品推荐
相关产品推荐

