无法读取视频输出

Cannot read video output

我正在使用背景减法示例。它运行良好,但视频输出不可读。我的视频是 gray 所以这可能是我遇到这个问题的原因。我找不到太多关于如何使用 VideoWriter_fourccVideoWriter 不同参数的信息。我知道视频是 256x320 uint8.

import numpy as np
import cv2

#MOG2 Backgroundsubstrator
cap = cv2.VideoCapture('videotest.avi')

fgbg = cv2.createBackgroundSubtractorMOG2()
##
# Define the codec and create VideoWriter object
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi',fourcc, 20.0, (256,320))
##
while(cap.isOpened()):
    ret, frame = cap.read()
    fgmask = fgbg.apply(frame)  

    if ret==True:
        cv2.imshow('frame',fgmask)
        out.write(fgmask)
        k = cv2.waitKey(30) & 0xff
        if k == 27:
            break
    else:
        break 

cap.release()
out.release()
cv2.destroyAllWindows()

使用:

fourcc = cv2.VideoWriter_fourcc(*'XVID')

按原样编写视频即可。在这种情况下,我正在尝试使用背景减法来编写视频。修复是:

fourcc = cv2.VideoWriter_fourcc(*'DIB ')

注意:不要忘记DIB后的space。我正在使用 Python 3.5 和 OpenCV3.1