OpenCV Python录制视频无法打开,错误码0xc10100be求助
解决OpenCV录制视频后无法打开(错误码0xc10100be)的办法
以下是针对你代码问题的具体修复点:
必须添加帧写入操作
你的代码循环里仅显示了摄像头画面,完全没执行videoFileOutput.write(frame)把捕获的帧写入输出文件,这会导致生成的视频为空或结构损坏,这是核心问题。资源释放要调用方法(加括号)
videoFileOutput.release、cap.release、cv2.destroyAllWindows都是类方法,必须加()才能执行资源释放逻辑,否则视频文件无法正常完成收尾,导致损坏。修正帧读取的判断逻辑
你把cap.read()的返回值变量名写成了red(正确应为ret,表示读取是否成功),必须先判断ret是否为True,确保读取到有效帧后再进行后续操作,避免写入无效数据。匹配分辨率或调整帧尺寸
手动设置的(600,600)分辨率可能和摄像头实际输出的帧尺寸不匹配,要么获取摄像头原生分辨率,要么用cv2.resize()把捕获的帧调整到设置的尺寸后再写入。
修正后的完整代码
import cv2 cap = cv2.VideoCapture(0) # 可选:获取摄像头原生分辨率,替换手动设置的resolution # width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) # height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) filename = "C://Users//deniz//Desktop//cfg13131lol.avi" codec = cv2.VideoWriter_fourcc("W", "M", "V", "2") frameRate = 30 resolution = (600, 600) videoFileOutput = cv2.VideoWriter(filename, codec, frameRate, resolution) while True: ret, frame = cap.read() if not ret: # 确保成功读取帧 break cv2.imshow("webcam.", frame) frame = cv2.flip(frame, -1) # 调整帧尺寸到设置的分辨率(如果摄像头尺寸不匹配) frame = cv2.resize(frame, resolution) videoFileOutput.write(frame) # 写入帧到视频文件 if cv2.waitKey(1) & 0xFF == ord("q"): break # 正确释放资源 videoFileOutput.release() cap.release() cv2.destroyAllWindows()
内容的提问来源于stack exchange,提问作者bulletproofspirit
相关产品推荐
相关产品推荐

