Python 在网络摄像头播放流媒体时定期拍照

Python 在网络摄像头播放流媒体时定期拍照,python,opencv,flask,video-streaming,webcam,Python,Opencv,Flask,Video Streaming,Webcam,我希望在将视频流传输到浏览器时,定期(即每5秒)使用网络摄像头拍照。在Python中如何使用Flask和OpenCV实现这一点?在Windows上,使用网络摄像头非常容易 例如 在Linux上,它是,但仍然是相同的原则 但是,如果您希望毫不拖延地执行此操作,这可能会更好: import time from VideoCapture import Device webCam = Device() name = 1 while(True): #Take pictures forever we

我希望在将视频流传输到浏览器时,定期(即每5秒)使用网络摄像头拍照。在Python中如何使用Flask和OpenCV实现这一点?

在Windows上,使用网络摄像头非常容易

例如

在Linux上,它是,但仍然是相同的原则

但是,如果您希望毫不拖延地执行此操作,这可能会更好:

import time
from VideoCapture import Device
webCam = Device()
name = 1
while(True): #Take pictures forever
    webCam.saveSnapshot(name + '.jpg') #Take picture
    start = time.time()
    while not (time.time() - start > 50):
        pass
    name = name+1 #We don't want to write over the same image every time

不要自己写,使用像
motion
这样的工具使用time.sleep的问题在于它会停止流媒体。我想要流媒体和快照。我查看了threading.Timer,但我不明白您可以这样做:
start=time.time(),而不是(time.time()-start>5):通过
参见上文,我编辑了我的答案如果这回答了您的问题,请将我的答案标记为正确。但是,如果您仍然需要澄清,请在评论中说明。我以不同的方式解决了这个问题,通过计算帧而不是计算时间,并使用if语句,如下所示:
import time
from VideoCapture import Device
webCam = Device()
name = 1
while(True): #Take pictures forever
    webCam.saveSnapshot(name + '.jpg') #Take picture
    start = time.time()
    while not (time.time() - start > 50):
        pass
    name = name+1 #We don't want to write over the same image every time