我正在python的openCV中进行一些背景减法,并希望有一个有用的输出来使用。教程here包含用于背景减法的几种方法的代码,但是在Rodeo中运行每种方法会导致单独的窗口打开,并且图像在消失之前会闪烁,仅被下一帧替换。
我想将每个帧存储为自己的图像,以便可以在处理流中进一步处理每个帧。但是,由于我无法独立命名每个文件(如我可以使用for
循环(例如,使用cv.imwrite('bg'+str(i)+'.jpg', fgmask)
),因此尝试添加imwrite命令受到了阻碍。
最终,以下示例代码中的cv.imshow()
对于可视化很有用,但是我想用唯一的顺序文件名保存每个图像。因此,我想使用cv.imshow()
行而不是cv.imwrite()
,该行使用顺序文件编号系统来写每一帧。
import numpy as np
import cv2 as cv
cap = cv.VideoCapture('vtest.avi')
fgbg = cv.bgsegm.createBackgroundSubtractorMOG()
while(1):
ret, frame = cap.read()
fgmask = fgbg.apply(frame)
cv.imshow('frame',fgmask)
k = cv.waitKey(30) & 0xff
if k == 27:
break
cap.release()
cv.destroyAllWindows()
答案 0 :(得分:1)
在while循环之前定义i = 0,然后在循环中增加i = 0,并将其用作文件名。