从屏幕上的矩形获取平均主色(live/python)

从屏幕上的矩形获取平均主色(live/python),python,opencv,screenshot,Python,Opencv,Screenshot,我想做的是在电脑屏幕上设置一个矩形(Windows10)。每5-10秒,获取该矩形的平均颜色 示例:屏幕左下角的矩形50x50>获取平均颜色。如果是redish,请执行此操作。如果是蓝色的,就这样做。重复一遍 我的想法是,我可以得到一个屏幕截图(可能是Pyautogui),保存图像,然后裁剪所需的矩形(OpenCV),再次保存图像并分析它(OpenCV/Numpy) 然而,我认为这将是非常CPU密集型的。如果我想要轻便快速的东西,从哪里开始呢?您建议使用哪些库?您可以更有效地完成此任务,但即使按

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

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

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


然而,我认为这将是非常CPU密集型的。如果我想要轻便快速的东西,从哪里开始呢?您建议使用哪些库?

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

你提到的图书馆很好

  • 得到。将其存储在内存中(不是磁盘)
  • :获取每个通道颜色的平均值,并获取主色

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