【问题标题】:Detecting video playing in browser from a screenshot -- OpenCV从屏幕截图中检测浏览器中播放的视频——OpenCV
【发布时间】:2010-06-01 18:40:12
【问题描述】:

我想在屏幕上播放的视频周围画一个矩形。例如,我正在浏览器中观看 YouTube 视频。我希望能够截取屏幕截图,分析该屏幕截图,然后在 YouTube 视频正在播放的位置周围绘制一个矩形。我刚刚开始研究如何做到这一点。我遇到了 OpenCV。我知道 OpenCV 涵盖了许多计算机视觉技术。他们中的任何一个会特别适合这项任务吗?另外,这是可以实时完成的吗?最后,有没有一种技术可以同时在浏览器和全屏中使用?

谢谢!

编辑:

Marc 提出了一个很好的观点。理想情况下,我希望能够仅使用一个屏幕截图来识别视频。我不确定如果可能的话。比较一下相隔一两秒的截图怎么样?

【问题讨论】:

  • 只有一张截图?要检测视频,您需要能够检测运动。从网页的单个屏幕截图中,无法推断出哪些组件是静态/动态的。如果您知道它只会以(例如)较小的格式查看 youtube 页面,您也许可以让 OpenCV 像面部识别功能集一样识别页面,然后在预期区域中为矩形播放器窗口进行形状查找...

标签: opencv screenshot computer-vision video-capture


【解决方案1】:

如果视频没有全屏播放,您可以:

  1. 检测运动部件(简单光流
  2. 为视频控件执行模板匹配:D(比 YouTube 徽标简单得多,...)
  3. 流场的形态学运算。

如果视频正在全屏播放,在光流直方图上训练的 SVM 应该会告诉您它是全屏的。

【讨论】:

    【解决方案2】:

    如果它只是一个 Youtube 视频,你可以使用边缘检测算法(如 Canny 或 Sobel)找到视频播放器的边界,并使用 OpenCV MatchTemplate 方法查找 Youtube 徽标。将这 2 个结合起来应该可以为您提供相当不错的准确度。

    您还可以检查边界矩形大小,因为 Youtube 在特定的高度 x 宽度窗口播放。

    【讨论】:

      【解决方案3】:

      您还可以查看纹理细节的数量,尤其是每种颜色。

      计算机屏幕通常充满空白区域。如果有纹理(即边缘),则通常是单一颜色(即文本),视频或任何照片图像通常更复杂,由更多颜色组成。

      【讨论】:

        猜你喜欢
        • 2022-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多