PyAutoGUI定位命令返回错误的图像识别坐标

时间:2017-04-25 09:20:23

标签: python python-3.x screen bots pyautogui

我正在尝试使用pyautogui.locateCenterOnScreen()在屏幕上找到图像的确切点,但每当返回坐标时,它似乎总是大两倍(即给出(2026, 722)但实际上是(1013, 361))。我正在使用带有Retina Display的Macbook Pro 2016运行macOS Sierra。有什么建议如何解决这个问题?提前致谢。

Image Recognition Result Screenshot

Image to locate on screen

我希望这个屏幕截图有助于解决我的问题。

5 个答案:

答案 0 :(得分:2)

import pyautogui
position = pyautogui.locateCenterOnScreen('image.png')
print(position.x/2,position.y/2)
pyautogui.click(position.x/2,position.y/2)

答案 1 :(得分:1)

出于某种原因,我的 m1 Macbook 不喜欢这些答案,所以这就是我想出的。

position2 = position[0]/2, position[1]/2, position[2]/2, position[3]/2
pyautogui.moveTo(position2)
pyautogui.click()

答案 2 :(得分:0)

最有可能的是,通过查看您正在使用的代码或模块,您可以解决这个问题。最有可能的问题是你以错误的方式解释某事。

如果您提供屏幕截图和想要在其上找到的图像,那么无需猜测就可以更轻松地提供帮助。

答案 3 :(得分:0)

我对MacBook也有这个问题。我只能认为它与MacBook及其发送屏幕信息的方式有关。

作为一种解决方法,我刚刚将坐标除以2。

答案 4 :(得分:0)

Pyautogui使用screencaps在屏幕上查找内容的位置。带有视网膜显示屏的Mac上的问题是屏幕输出的像素数量是两倍,以利用系统更高的像素密度来获得更清晰的图像。因此,当您截取屏幕截图时,您会得到一个包含两倍数字的图像像素来自非视网膜Mac的相同图像。我目前正在研究是否可以调整图像大小并仍然能够找到匹配(如果不使用cv2模糊搜索则关闭一个像素并且不匹配) source