【问题标题】:Pyautogui - Problems with Changing ScreenshotsPyautogui - 更改屏幕截图的问题
【发布时间】:2019-09-15 18:41:23
【问题描述】:

好的,我已经开始使用 python 进行编程,并且到目前为止取得了相当大的成功。我编写了一个程序,该程序使用 pyautogui 自动执行我需要每月执行的任务。

我截取了需要鼠标单击的位置,完成所有操作后,我有一个工作程序可以在屏幕上搜索要单击的按钮,控制该位置的鼠标,然后打印出我需要的报告。所以,我需要做的就是将它插入任务调度程序,它会为我完成工作!

几天后,我决定继续安排。我再次运行程序,它崩溃了!长话短说,屏幕截图不匹配。我再次截屏,并在 Paint 中将两个图像缩放 800%,并检查两个不同图像中“I”旁边的像素,确定 rgb 值不同。

我尝试了其他几个地方,虽然它们看起来一样... rgb 值可能相差一两点!我很好奇为什么会这样!

【问题讨论】:

  • 可能有几个原因,与操作系统、您正在与之交互的应用程序以及您用于捕获和保存捕获的图像的应用程序有关(在您的情况下,Paint 可能正在对颜色)。你注意到the docs 中的tolerance 选项了吗?顺便说一句,我喜欢 python,但是如果你在 Windows 上,一个更强大但语法上很笨拙的自动化工具是AutoIT。它允许您直接与标准窗口控件交互,但具有图像匹配作为后备..
  • 我还没有浏览该模块的官方文档。我按照automatetheboringstuff.com 中的说明进行操作,它告诉我每个像素都必须匹配,没有提到“容差”。
  • 使用示例:pyautogui.pixelMatchesColor(100, 200, (140, 125, 134), tolerance=10)
  • pyautogui.locateCenterOnScreen('pic.png', tolerance = 10) #这行得通吗?
  • 不,抱歉 ProjectResolute,仔细检查后,似乎只支持像素颜色匹配的公差关键字,而不是您需要的。其他人有 requested tolerance keyword support 用于 locateCenterOnScreen 功能,但尚未实现。

标签: python pyautogui


【解决方案1】:

使用置信度,默认值为 0.999。原因是 pyscreez 实际上是由 pyautogui 使用的,它的置信度值很可能代表 0% - 100% 的相似性匹配百分比。用我业余的眼光看代码,发现 OpenCV 和 NumPy 是信心工作所必需的,否则将使用一个没有信心值的不同函数。

例如:

pyautogui.locateCenterOnScreen('foo.png', confidence=0.5) 会将您的置信度设置为 0.5,即 50%。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-27
  • 1970-01-01
  • 2020-12-23
  • 1970-01-01
  • 2017-02-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多