问题解决:OpenCV将捕获的视频保存,却无法播放,报解析错误

问题解决:OpenCV将捕获的视频保存,却无法播放,报解析错误

首先明确这个问题很常见,最终生成的视频一般10KB以内,双击打卡就会报格式错误,解析错误等,其实就以下这几个点,不注意就会造成格式不正确。

解码格式与保存的文件格式要相匹配

在Fedora中:DIVX,XVID,MJPG,X264,WMV1,WMV2。(最好使用XVID。MJPG会生

成大尺寸的视频。X264会生成非常小的尺寸的视频)

在Windows中:DIVX(尚待测试和添加)

在OSX中:MJPG(.mp4),DIVX(.avi),X264(.mkv)

DIVX, MJPG,不知道具体用什么解码,就都试一试

fourcc = cv2.VideoWriter_fourcc(*'XVID')

输出视频的窗口大小,要和图片大小相匹配

比如说我的图片是240*210的,我设置的输出视频窗口大小为210*240

窗口大小要进行宽高反写,不能用行列数的形式来表示

out = cv2.VideoWriter('output.avi', fourcc, 20.0, (210,240))

如果灰度图片要特殊处理,加入参数0或false

cv.VideoWriter()函数默认保存为RGB格式的彩色视频,要保存为灰度视频应在最后添加False或0

out = cv2.VideoWriter('output.avi', fourcc, 20.0, (210,240))

如果想要保存MP4格式的视频,就写成output.mp4v,写成.mp4也可以不影响播放,就是会保错

fourcc = cv2.VideoWriter_fourcc(*'MJPG')

out = cv2.VideoWriter('output.mp4v', fourcc, 20.0, (210,240),0)

demo:保存灰度图像的视频

""" 从视频读取帧保存为图片"""

import cv2

import numpy as np

# cap = cv2.VideoCapture("C:/Users/lenovo/Videos/1.mp4")#读取文件

cap = cv2.VideoCapture(0)#读取摄像头

fourcc = cv2.VideoWriter_fourcc(*'XVID')

out = cv2.VideoWriter('output.mp4v', fourcc, 20.0, (210,240),0)

while(True):

ret, frame = cap.read()

#下面三行可以根据自己的电脑进行调节

src = cv2.resize(frame,(width,height), interpolation=cv2.INTER_CUBIC)#窗口大小

cv2.rectangle(src, (90, 60), (300, 300 ), (0, 255, 0))#框出截取位置

roi = src[60:300 , 90:300] # 获取手势框图

print(roi.shape)

gray = cv2.cvtColor(roi, cv2.COLOR_BGR2GRAY)#转化为灰度图片

out.write(gray)

cv2.imshow("2",gray)

key = cv2.waitKey(50) & 0xFF

if key == ord('q'):

break

cap.release()

out.release()

cv2.destroyAllWindows()

相关推荐

古琴曲《卧龙吟》,奏响千年绝唱
hse365平台

古琴曲《卧龙吟》,奏响千年绝唱

📅 07-01 👁️ 5440
科比生涯都在哪些球队科比之前在哪个球队
hse365平台

科比生涯都在哪些球队科比之前在哪个球队

📅 07-18 👁️ 6677
乐视电视一开机就进入hdmi怎么调
365BET体育投注官网

乐视电视一开机就进入hdmi怎么调

📅 07-01 👁️ 8551
Cat Translator
365BET体育投注官网

Cat Translator

📅 07-07 👁️ 5083