【问题标题】:How to use opencv screen recording output for movement detection in python?如何在python中使用opencv屏幕录制输出进行运动检测?
【发布时间】:2022-01-21 08:42:41
【问题描述】:

作为一名保安,我们必须留意一台 60 英寸的电视,它提供 20 个摄像头输出。所以一直看锅真的很难。我决定开发一个程序来矩形化屏幕中的移动对象并发出一些哔哔声。我的第一步是捕获屏幕帧。使用下面的代码是可能的。

import numpy as np
import cv2
from mss import mss
from PIL import Image

bounding_box = {'top': 100, 'left': 0, 'width': 400, 'height': 300}

sct = mss()

while True:
    sct_img = sct.grab(bounding_box)
    cv2.imshow('screen', np.array(sct_img))

    if (cv2.waitKey(1) & 0xFF) == ord('q'):
        cv2.destroyAllWindows()
        break

据我了解,我们可以使用 opencv 来做一些魔术。网上有一些不错的教程,例如this one。我的问题是他们从摄像头或离线视频文件中获取帧或流,但在这里我有屏幕录制。你们能帮我如何将这些帧转发到运动检测算法中吗?谢谢

【问题讨论】:

  • 那篇博文使用了我从未见过的 API。它可能已经过时了。
  • @ChristophRackwitz 是的,看起来 API 所在的 OpenCV 的最后一个版本是 2.2 ,发布于 2010 年。那个“不错的教程”的 github 存储库是从 2012 年开始的,从那以后几乎没有动过。跨度>

标签: python opencv


【解决方案1】:

过程相同,需要修改图片源。
在您链接的示例中 - 在“智能方式”代码中 - 替换

cv.QueryFrame(self.capture)

sct.grab(bounding_box)

使用截屏作为图像源

【讨论】:

  • 谢谢,但据我所知,它只从屏幕上获取一张图像。
猜你喜欢
  • 2016-09-23
  • 1970-01-01
  • 2012-12-08
  • 2017-06-20
  • 1970-01-01
  • 2014-08-20
  • 1970-01-01
  • 1970-01-01
  • 2020-12-21
相关资源
最近更新 更多