在流式传输网络摄像头时定期拍照

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/…

以上是关于在流式传输网络摄像头时定期拍照的主要内容,如果未能解决你的问题,请参考以下文章

使用 socket.io 流式传输网络摄像头

如何在 flash/rtmp 中将客户端网络摄像头流式传输到网络服务器

将实时网络摄像头流式传输到服务器并返回网络的最佳方式是啥?

如何使用 C# 流式传输网络摄像头视频? [关闭]

使用 FFmpeg 从 Mac 流式传输网络摄像头

寻找最快的视频编码器,将网络摄像头流式传输到 ipad