我使用的代码将输入作为视频文件,然后对视频应用图像处理(前景分割)。 我正在尝试保存已处理的帧(输出),但我无法弄清楚如何使用循环这样做。
while(1):
ret, frame = cap.read()
fgmask = fgbg.apply(frame)
cv2.imshow('frame',fgmask)
cv2.imwrite("frame.jpg", fgmask)
代码的最后一行保存帧。但它目前只保存最后生成的输出,因为没有循环来保存生成的所有帧。
如何使用循环保存处理的所有文件?
答案 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()