【问题标题】:Is it possible to detect pixels color with python?是否可以用python检测像素颜色?
【发布时间】:2020-08-31 18:38:41
【问题描述】:

我试图通过颜色来检测一个确切的像素,然后无论是否找到该像素都做一些事情。我认为你(显然)不能用 vanilla python 来做这个,但我还没有找到任何模块来做到这一点。如果这是可能的,我想举一些例子。感谢您的建议。

编辑:基本上,我需要扫描一个像素(1920x1080 屏幕)并获取 RGB 值

【问题讨论】:

  • “按颜色”是什么意思?喜欢通过指定 RGB 值?例如,[255, 255, 255]?我认为您可以为您的问题添加更多细节,这似乎很模糊
  • 是的,基本上是扫描一个像素然后收集它的 RGB 值,从 0 到 255

标签: python colors pixel


【解决方案1】:

您可以使用Pillow 做您想做的事。

您可以尝试以下功能。这是https://stackoverflow.com/a/765774/8581025代码的修改版本。

from PIL import Image

def detect_color(rgb, filename):
    img = Image.open(filename)
    img = img.convert('RGBA')
    data = img.getdata()

    for item in data:
        if item[0] == rgb[0] and item[1] == rgb[1] and item[2] == rgb[2]:
            return True
    return False

比如想知道当前工作目录下example.png文件中是否有红色像素(255,0,0),可以使用如下代码。

detect_color((255, 0, 0), 'example.png')  # returns True if there is a red pixel, False otherwise.

获取特定坐标的像素颜色,可以参考Get pixel's RGB using PIL

【讨论】:

【解决方案2】:

您可以使用numpypyautogui

import numpy as np
import pyautogui

image = np.array(pyautogui.screenshot())

np.argwhere(image == [255, 255, 255])

它将返回所有具有指定颜色的点。

【讨论】:

  • 我假设 255, 255, 255 等于白色,但是,这不会返回任何东西
  • 也许没有什么是完全白色的?环顾四周,我注意到很少有东西,如果有的话,是完全白色的。 [0, 0, 0] 可能会让您更幸运,但在所有可能性 (255**3) 中,您的机会很小。也许试试间隔
  • 我用while True: 循环了这个,但没有任何显示。我不认为这段代码应该在控制台上打印任何东西。
  • Tbh 我不知道你在做什么。我还没有看到你的代码
猜你喜欢
  • 2014-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-28
  • 2011-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多