【问题标题】:Get average-dominant color from a rectangle on screen (live/python)从屏幕上的矩形获取平均主导颜色(live/python)
【发布时间】:2020-11-01 04:08:45
【问题描述】:

我要做的是在 PC 屏幕上设置一个矩形 (Windows 10)。每 5-10 秒,获取该矩形的平均颜色。

示例:屏幕左下角的 50x50 矩形 > 获取平均颜色。如果发红,请执行此操作。如果偏蓝,就这样做。重复。

我的想法是我可以获取屏幕截图(可能是 Pyautogui),保存图像,然后裁剪所需的矩形(OpenCV),再次保存图像并分析它(OpenCV/Numpy)。

但是,我认为这会占用大量 CPU。如果我想要轻量级和快速的东西,我可以从哪里开始?您会推荐哪些库?

【问题讨论】:

  • 背景颜色或图像是什么?除了矩形之外,它是全黑的吗?在 Python Opencv 中获得屏幕截图后,您无需将数据保存到磁盘。您可以在不保存到磁盘的情况下对其进行分析。裁剪矩形并减少颜色数量,然后获取直方图并找到最常见的颜色。
  • 一种简单的方法是获取矩形像素,然后使用 np.mean() 或 cv2.mean() 来获取平均颜色。如果背景是黑色的,可以使用 np.nonzero() 查找矩形中的像素,然后从 cv2.mean 或 np.mean 中获取平均值。

标签: python opencv screenshot


【解决方案1】:

您可以更高效地完成此任务,但即使您按照您描述的方式进行操作,这些操作也不是计算密集型操作。所有这些都应该少于 0.1 秒。正如@fmw42 所述,您无需保存,即时进行分析。

你提到的库很好。

  1. 获取screenshot。将其存储在内存中(而不是磁盘)
  2. mean:求各通道颜色的均值,求主色。
  3. save image on disk

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-28
    • 2013-11-02
    • 1970-01-01
    • 2011-07-09
    • 1970-01-01
    • 1970-01-01
    • 2013-12-20
    • 2014-04-28
    相关资源
    最近更新 更多