import pyautogui
print (pyautogui.locateCenterOnScreen("C:\Users\Venkatesh_J\PycharmProjects\mouse_event\mouse_event.png"))
不返回坐标,而是返回None
。
答案 0 :(得分:6)
看起来像couldn't find任何与屏幕上的图片相匹配的内容。
locateCenterOnScreen(image, grayscale=False)
- 返回屏幕上第一个找到的图像实例中心的(x,y)坐标。如果在屏幕上找不到,则返回None。
答案 1 :(得分:3)
我的问题解决了当我用pyautogui内置函数截取屏幕截图而不是 WIN + Printscr ,因为如果我们通过 WIN + Printscr 截取截图,那么像素密度和其他图像与pyautogui内置功能相比,相关数据可能有所不同。可能这件事对我来说对你有用了 对于Ex - wifi.png 所以首先我拍完全截图,然后从完整图像裁剪出来,然后我把它放在我的代码中,如下所示
import pyautogui
print(pyautogui.locateCenterOnScreen('wifi.png'))
答案 2 :(得分:2)
最初的问题非常简单 - 图书馆找不到屏幕上显示的图像,因此返回None
而不是坐标,因为它会in the docs。
但是,这里可能存在误解,特别是来自在问题上发布赏金并提出similar question here.的用户。发表评论
"图片在我的桌面上"
使用此功能时,将文件名作为字符串传递。然后,库加载图像文件并在屏幕上查找图片(而不是文件名)。 pyautogui.locatecentreonscreen()
会在屏幕上显示 实际图片 。它不会在桌面上查找文件,也不会查找与传递给它的图像同名的文件图标。
假设您有一个名为flower.jpg
的文件,其中包含以下图片,保存在桌面上。
如果没有其他窗口打开,请运行:
coords = pyautogui.locateCenterOnScreen('C:\\Richard\\Users\\flower.jpg')
print(coords)
结果为None
这是因为即使桌面上有一个名为flower.jpg
的图标,该图片也不会显示在我的屏幕 上。即使该图标是花的小规模版本,也是如此。
但是,如果我让图像可见(因为我正在准备这篇文章)并做同样的事情,我会得到协调 - 例如:
如您所见 - 因为实际图像在屏幕上,图书馆找到它,坐标为524,621
总之,如果图书馆没有找到屏幕上显示给用户的图像,它将返回None。请注意,图像必须在运行代码时对用户可见。它无法在您的桌面上找到相应的图标,或类似的图标,或者隐藏在"隐藏的窗口中的图像。落后于另一个那是你想要做的吗?
答案 3 :(得分:0)
您确定图片的尺寸与图标相同吗?
如果不是pyautogui.locateCenterOnScreen()
会引发TypeError: 'NoneType' object is not iterable
还要确保完整图标可见并且与图像相同:"C:\Users\Venkatesh_J\PycharmProjects\mouse_event\mouse_event.png"
希望问题解决了!
答案 4 :(得分:0)
根据Don Kirby的说法,在屏幕上找不到匹配的图像 。您可以在Windows照片库(或Tk
)中打开图像,然后pyautogui
会找到它。
答案 5 :(得分:0)
很好的解释,有没有什么库比pyautogui更好?我的意思是它想在屏幕上显示相同的图片。有时我们需要类似的东西。 – GLHF '16 May 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。
答案 6 :(得分:0)
如果由于图像问题而无法使用pyautogui.locateCenterOnScreen()
,请尝试使用截屏工具(如果在Windows上)拍摄屏幕快照。
另外,请确保您已下载“枕头”模块