循环以保存生成的多个帧

时间:2017-01-17 00:01:44

标签: python opencv

我使用的代码将输入作为视频文件,然后对视频应用图像处理(前景分割)。 我正在尝试保存已处理的帧(输出),但我无法弄清楚如何使用循环这样做。

while(1):
    ret, frame = cap.read()
    fgmask = fgbg.apply(frame)
    cv2.imshow('frame',fgmask)

    cv2.imwrite("frame.jpg", fgmask)

代码的最后一行保存帧。但它目前只保存最后生成的输出,因为没有循环来保存生成的所有帧。

如何使用循环保存处理的所有文件?

2 个答案:

答案 0 :(得分:3)

引入计数器以更改文件名将解决问题

cnt = 1
while(1):
    ret, frame = cap.read()
    fgmask = fgbg.apply(frame)
    cv2.imshow('frame',fgmask)

    cv2.imwrite("frame" + str(cnt) + ".jpg", fgmask)
    cnt += 1

答案 1 :(得分:0)

或者您可以输出生成的帧的视频。

# Open the video writer
out = cv2.VideoWriter('output.avi',-1, 1,(int(cap.get(cv2.cv.CV_CAP_PROP_FRAME_WIDTH)),int(cap.get(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT))))

while(1):
    ret, frame = cap.read()
    fgmask = fgbg.apply(frame)    
    # Write the frame
    out.write(fgmask)

# Release the writer
out.release()