无法保存背景扣除视频Python openCV

时间:2017-05-19 15:07:39

标签: python opencv video

我有一个输入文本文件,其中包含我必须放在一起视频中的图像名称,然后在视频上应用背景减法,然后保存输出。

我试过了:

# convert images to video
f = open('files_harsha.txt','r+')
fourcc = cv2.VideoWriter_fourcc(*'DIVX')
out = cv2.VideoWriter('harsha_output.avi',fourcc, 10.0, (1344,1024))
for line in f:
    frame=cv2.imread(line.strip())
    out.write(frame)
#    cv2.imshow('1',frame)
#    cv2.waitKey(0)

out.release()

以上代码段正常运行,保存了视频。然后我执行背景减法并尝试保存输出,如下所示:

capture = cv2.VideoCapture('harsha_output.avi')
size = (int(capture.get(cv2.CAP_PROP_FRAME_WIDTH)),
int(capture.get(cv2.CAP_PROP_FRAME_HEIGHT)))
fourcc = cv2.VideoWriter_fourcc(*'DIVX')
video = cv2.VideoWriter('harsha_subtractor.avi', fourcc, 10.0,size)
fgbg= cv2.createBackgroundSubtractorMOG2(varThreshold=50,history=4)

while (1):
    ret, img = capture.read()
    if ret==True:
        fgmask = fgbg.apply(img)
        video.write(fgmask)
        #cv2.imshow('forehead',fgmask)

    else:
        capture.release()
        video.release()
        break

    k = cv2.waitKey(30) & 0xff
    if k == 27:
        break

cv2.destroyAllWindows()

我能够看到背景减去视频,但我无法保存文件。我为什么遇到这个问题?

我在Anaconda IDE(Spyder)中使用Python 2.7并使用openCV 3.x

2 个答案:

答案 0 :(得分:0)

仅供记录。根据{{​​3}}的建议,fgmask是1通道图片,因此VideoWriter无法显示以下error: (-215) scn==2 & (scn == 3 || scn == 4)。 我解决了将isColor=False参数传递给VideoWriter

答案 1 :(得分:0)

我正面临类似的问题。将isColor=False参数添加到VideoWriter中。

相应地更改代码的某些部分,如下所示:

video = cv2.VideoWriter('harsha_subtractor.avi', fourcc, 10.0, size, 
isColor=False)