在python中创建时间推移图像

时间:2014-03-01 15:09:03

标签: python opencv timelapse

以下代码从网络摄像头捕获图像,并保存到磁盘中。我想编写一个程序,可以每30秒自动捕获一次图像,直到12小时。最好的方法是什么?

import cv2     
cap = cv2.VideoCapture(0)
image0 = cap.read()[1]
cv2.imwrite('image0.png', image0)

以下是基于@John Zwinck答案的修改,因为我还需要将每30秒捕获的图像写入磁盘命名并捕获时间:

import time, cv2
current_time = time.time()
endtime = current_time + 12*60*60
cap = cv2.VideoCapture(0)
while current_time < endtime:    
    img = cap.read()[1]
    cv2.imwrite('img_{}.png'.format(current_time), img)
    time.sleep(30)

但是,上面的代码每次只能写入前一个文件。寻找它的改进。

2 个答案:

答案 0 :(得分:3)

import time
endTime = time.time() + 12*60*60 # 12 hours from now
while time.time() < endTime:
    captureImage()
    time.sleep(30)

答案 1 :(得分:0)

您的输出图像名称是相同的!!!在while循环中,current_time不会更改,因此它将使用相同的名称保存每个帧。将.format(current_time)替换为.format(time.time())应该有效。

替换

while current_time < endtime:
img = cap.read()[1] cv2.imwrite('img_{}.png'.format(current_time), img) time.sleep(30)

cv2.imwrite('img_{}.png'.format(int(time.time())), img)