import pyautogui
print (pyautogui.locateCenterOnScreen("C:\Users\Venkatesh_J\PycharmProjects\mouse_event\mouse_event.png"))
它不返回坐标,而是返回
None
。
似乎无法找到任何与屏幕上的图像相匹配的内容。
- 返回屏幕上第一个找到的图像实例的中心 (x, y) 坐标。如果在屏幕上找不到,则返回 None。locateCenterOnScreen(image, grayscale=False)
最初的问题非常简单 - 库找不到传递到屏幕上的图像,因此返回
None
而不是文档中所说的 的坐标。
但是,这里可能存在误解,特别是来自在该问题上发布赏金并在此提出类似问题的用户。。有评论了
“图片在我的桌面上”使用此函数时,您将文件名作为字符串传递。然后,库加载图像文件并在屏幕上查找图片(而不是文件名)。
pyautogui.locatecentreonscreen()
将查找实际图像(如果它在屏幕上可见)。它不会查找桌面上的文件或与传递给它的图像同名的文件图标。 示例
flower.jpg
的文件,其中包含以下图像,保存在桌面上。在没有打开其他窗口的情况下,运行:
coords = pyautogui.locateCenterOnScreen('C:\\Richard\\Users\\flower.jpg')
print(coords)
结果是None
,即使桌面上有一个名为 flower.jpg
如您所见 - 因为实际图像在屏幕上,所以库会找到它,并带有坐标
524,621
如果没有
pyautogui.locateCenterOnScreen()
将会提高
TypeError: 'NoneType' object is not iterable
还要确保完整的图标可见并且看起来与图像相同:"C:\Users\Venkatesh_J\PycharmProjects\mouse_event\mouse_event.png"
在屏幕上没有找到匹配的图像。例如,您可以在 Windows 照片库(或 Tk
)中打开图像,然后
pyautogui
就会找到它。
很好的解释,有没有比 pyautogui 更好用的库?我的意思是它希望屏幕上显示完全相同的图片。有时我们也需要类似的东西。 – GLHF 2016 年 5 月 11 日 15:45尝试使用此代码行:
pyautogui.locateCenterOnScreen("yourscreenshot.PNG", confidence=0.9)
我认为置信度范围为0.1-0.9。 除非您有几张看起来几乎相似的图片,否则这可能会解决该异常。 如果这不起作用,请尝试使用更多/更少的原始图像制作第二个屏幕截图并编写以下代码:
try:
pyautogui.locateCenterOnScreen("yourscreenshot.PNG", confidence=0.9)
except TypeError:
pyautogui.locateCenterOnScreen("yourscreenshot2.PNG", confidence=0.9)
这将使用稍微不同的图片进行第二次尝试,并希望不会返回 TypeError。
pyautogui.locateCenterOnScreen()
,请尝试使用截图工具(如果您使用的是Windows)来截图。它可以。 另请确保您已下载“Pillow”模块
pip install opencv-contrib-python
coords =pyautogui.locateCenterOnScreen('C:\\test.jpg')
None
和
Point(x=1543, y=461)
。我读了Aleks的答案,并猜测它在当前环境中的
confidence
时隐式使用参数
opencv-contrib-python
(Y有但X没有)。我没有深入研究,只是在虚拟环境 X 中安装了
opencv-contrib-python
并解决了我的问题。
pic_location = pyautogui.locateOnScreen("edge-pic.png",confidence=0.9)
但是为此你需要导入 opencv-python 包
使用命令。
pip install opencv-python