循环以保存生成的多个帧

  • 本文关键字:保存 循环 python opencv
  • 更新时间 :
  • 英文 :


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

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

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

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

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

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

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

# 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()

最新更新