使用计算机视觉检测屏幕录制中的鼠标移动

Detecting mouse movement in a Screen Recording using Computer Vision

我想检测并跟踪屏幕录制视频中的鼠标光标。我的目标是跟踪视频中的鼠标光标并了解 window 关闭、退出应用程序等事件

使用普通的 CV 算法跟踪对象不起作用,因为光标和背景都是动态的,而且两者之间没有非常明显的对比。

有没有办法解决这个问题?

您可能可以使用 HAAR 分类器检测指针:这是一种基于机器学习的方法,其中从大量正图像和负图像训练级联函数。然后用于检测其他图像中的对象。 OpenCV 已经为面部、眼睛等内置了 trained HAAR Classifiers,但应该可以为光标训练您自己的。

您可以找到有关如何训练您自己的分类器的教程 here(如何执行此操作过于广泛,无法包含在此答案中)。

如果图像未压缩,则光标的所有像素值都是准确已知的,并且不会随着光标移动而改变(除非边缘有抗锯齿或透明度?)。

然后进行精确模式搜索。 (将光标滑动到每个可能的位置并检查像素的匹配,直到所有像素都匹配。)


如果您以这样一种方式安排搜索,即尝试的第一个光标像素具有与背景不同的颜色(最常见的颜色),您将最大限度地提高立即拒绝的可能性。如果尝试的前两个像素具有不同的颜色,那就更好了。通过这样做,尝试的像素数将接近图像大小的两倍,这是很难击败的。


马克·塞切尔在此行下方添加:

游标似乎确实发生了变化,因此您需要考虑这一点:

我使用帧差分结合连通分量分析来解决这个问题。

  • 对你的帧进行灰度化
  • 阈值前一帧和新的当前帧之间的差异
  • 找到这个二值图像中的连通分量
  • 如果您有一个或两个组件,而且它们很小,则可能是您的鼠标