在流式传输网络摄像头时定期拍照
Posted
技术标签:
【中文标题】在流式传输网络摄像头时定期拍照【英文标题】:Taking pictures periodically while streaming a webcam 【发布时间】:2016-11-04 23:06:22 【问题描述】:我想在将视频流式传输到浏览器时定期(即每 5 秒)用网络摄像头拍照。我如何在 Python 中做到这一点,最好使用 Flask 和 OpenCV?
【问题讨论】:
不要自己写,使用motion
之类的工具
【参考方案1】:
在 Windows 上,通过pygame 使用您的网络摄像头非常容易。
例如
import time
from VideoCapture import Device
webCam = Device()
name = 1
while(True): # Take pictures forever
webCam.saveSnapshot(name + '.jpg') # Take picture
time.sleep(5) # Wait 5 seconds
name = name+1 # We don't want to write over the same image every time
在 Linux 上是a bit more complicated,但原理还是一样。
但是,如果您想立即执行此操作,这可能会更好:
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
【讨论】:
使用 time.sleep 的问题在于它会停止流式传输。我想要流媒体和快照。我查看了 threading.Timer,但我很困惑 你可以这样做:start = time.time() while not (time.time() - start >5): pass
见上文,我编辑了我的答案
如果这回答了您的问题,请将我的回答标记为正确。但是,如果您仍然需要澄清,请在 cmets 中说明。
我以不同的方式解决了这个问题,通过计算帧而不是计算时间,并使用 if 语句,如下所示:opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/…以上是关于在流式传输网络摄像头时定期拍照的主要内容,如果未能解决你的问题,请参考以下文章