python - 无法保存背景减去视频Python openCV

标签 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

最佳答案

仅作记录。根据 dan-mašek 的建议,fgmask 是 1 channel 图像,因此 VideoWriter 无法显示以下 错误:(-215) scn==2 & (scn == 3 || scn == 4)。 我解决了将 isColor=False 参数传递给 VideoWriter 的问题。

关于python - 无法保存背景减去视频Python openCV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44073462/

相关文章:

python - 一些静态元素的快速排列

python - Python 基类是什么?

python - Pandas Dataframe 标签选择

java - 在java中将图像转换为圆柱形

javascript - AngularJS视频背景不工作

python - 安装 libmemcached 时 gcc 失败,退出状态为 1

opencv - 进行 Min-Max 归一化的正确方法

python - 在opencv Python中拖动鼠标画线并获取线的端点坐标

video - 即使录制意外中断(例如电源断开),如何在 gstreamer 中录制可播放的视频文件?

jQuery 点击 iframe 视频 (youtube)