Python:如何使用:pyautogui lib在屏幕上找到图像?

时间:2015-10-02 12:35:53

标签: python image detection pyautogui

代码是:

import pyautogui
startButton = pyautogui.locateOnScreen('start.png')
print startButton

或者:

import pyautogui
startButton = pyautogui.locateCenterOnScreen('start.png')
print startButton

输出结果为:

None

注意:根据documentation

,似乎存在正确的语法

注意:我也尝试过图像完整路径。图像在屏幕上,并且不与其他图像重叠。 pil库也已安装。其他pyautogui功能可以使用(包括截屏)

请让我知道我错过了什么。或者请建议另一个用于图像检测的Python库。

6 个答案:

答案 0 :(得分:3)

无表示 PyAutoGui 无法在屏幕上找到您的图片,请确保该窗口处于打开状态,其中 Start.png 已被采样从[和你拿样本和当前监视器]的决议是一样的。

答案 1 :(得分:2)

以下是我用于此的语法:

import pyautogui
start = pyautogui.locateCenterOnScreen('start.png')#If the file is not a png file it will not work
print(start)
pyautogui.moveTo(start)#Moves the mouse to the coordinates of the image

如果您同时使用多台显示器,则只会扫描主要

此程序扫描屏幕像素,颜色与PNG文件的像素匹配。如果图像颜色(图像的阴影,图像正在改变颜色等)以任何方式改变,它将以“无”回复。

答案 2 :(得分:0)

据我所知,可以通过将图像转换为RGB来解决问题。代码看起来像这样:

import pyautogui
from PIL import Image

im1=pyautogui.screenshoot()
im2=pyautogui.screenshoot("newone.png")
image.open("newone.png").convert("RGB").save("newone.png")

答案 3 :(得分:0)

您需要将图像的整个路径放在pyautogui.locateCenterOnScreen()中,如下所示:

pyautogui.locateCenterOnScreen('C:/Users/User/Desktop/start.png') 

这对我有用。您可能还想在该命令前添加x_cord, y_cord =,以便以后使用。

答案 4 :(得分:0)

尝试安装opencv并降低信心。对我有用

import pyautogui
startButton = pyautogui.locateOnScreen('start.png', confidence = 0.7)
print(startButton)

答案 5 :(得分:-1)

我有一个非常类似的问题。对我来说,解决方案是使用python 2.7而不是3.x.它可能是由于python 3的功能不太灵活所致。我更喜欢使用它,而pyautogui的工作非常出色。安装pyautogui时必须安装的枕头模块(或通常称为PIL),但使用python 3的功能似乎较少。