Pyautogui图像识别 returns None 不管我做什么

Pyautogui image recognition returns None no matter what I do

我一直在尝试让 pyautogui 以图形方式定位我桌面上的文件夹,但无论我做什么都失败了:

这是我的代码 (int_auto.py)

import pyautogui

button = pyautogui.locateCenterOnScreen('/Users/cadellteng/Desktop/Test-ground/randompy/pyxell2.png')
print(button)

我仔细阅读了我能找到的关于这个主题的每一个 SO 线程,有些人建议照片需要无损,所以我在 Mac 上使用 cmd+shift+4 命令来实现这一点。我的桌面截图和我使用的参考图像附在此处。

注意:此照片已转换为 jpg,因为 SO 只允许上传最大 2MiB 的照片

我尝试的其他事情是: 1. 使用 locateAllOnScreen 2.灰度=真 3.卸载pyautogui并重新安装pyautogui

但无论我做什么,似乎都得不到我想要的结果。如果有帮助,我会使用双屏幕,我的代码编辑器 (VS Code) 在第二屏幕上。您在这里看到的桌面是我的主屏幕。

当程序 运行 没有任何东西阻止文件夹。

我的终端上还有一个警告,我不确定它是否有用:

/Users/cadellteng/Desktop/Test-ground/randompy/env/lib/python3.8/site-packages/rubicon/objc/ctypes_patch.py:21: 
UserWarning: rubicon.objc.ctypes_patch has only been tested with Python 3.4 through 3.7.
You are using Python 3.8.2. Most likely things will work properly, but you may experience crashes if Python's internals have changed significantly. warnings.warn(

如果您需要更多信息,请告诉我。

编辑 2020 年 6 月 1 日:所以我认为 pyautogui 可能无法检测到该文件夹​​,因为有多个文件夹,它们看起来都一样,无法检测到。所以我从网上获取了这张图片,并尝试在我的桌面上打开它进行搜索,没有其他东西阻止它。但即便如此,它也无法找到它。

我不确定我是否做错了什么,但每次尝试,我都越来越相信这个 API 已经坏了。

图片的大小可能有问题。当我使用 locateOnScreen 在浏览器中找到一个元素并缩小,例如,10% 时,即使几乎相同,它也不会在屏幕上找到它。

你有一台 Macbook,所以我认为这是因为屏幕的像素密度和 pyautogui 检测到的分辨率。您可以通过以下方式检查: 图片 = pyautogui.LocateCenterOnScreen(‘image.png’) 打印(图像) 如果您看到坐标高于 2000,可能是因为分辨率。如果您想单击图像,我建议采用一种解决方法: pyautogui.click(image.x/2, image.y/2, clicks=1, interval=10, button='left') 也尽量裁剪图片!