使用 PyAutoGUI 和 OpenCV 在远程计算机上进行元素检测的问题

问题描述 投票:0回答:1

给出:PyAutoGUI 和 OpenCV。他们的具体任务是通过精确匹配找到当前屏幕上的特定元素。这是通过截取整个屏幕的屏幕截图,然后在其上搜索图像(矩形,边缘清晰)来完成的。如果成功,则返回找到匹配的坐标。

问题:本地一切正常;代码运行,并且找到所有所需的元素。除了本地环境之外,还有一台带有 GitLab 运行器的测试机来执行代码。在这台机器上运行时,有些元素的成功率是 100%,而另一些元素在任何条件下都找不到,无论搜索的图像是大还是小。感觉它无法在应用程序中找到与其他弹出窗口关联的元素。目前还不清楚这起什么作用,因为屏幕截图捕获了所有这些窗口,因此应该可以找到它们。

所做的尝试并没有帮助:在两台机器上设置相同的分辨率,将图像转换为相同的色彩空间,使用像素字体来减少噪音,尝试几种不同的库和搜索方法 - 总是在同一阶段失败。检查了库和路径变量——一切都是一样的。

可以做什么来了解问题以及如何解决它?

python opencv gitlab-ci-runner pyautogui pyscreeze
1个回答
0
投票

好吧,一切都以一种相当不平凡的方式解决了。问题出在被测程序和测试用户的设置中。重点是,程序的UI适应了用户屏幕的DPI,而且只做了一次——对于重启后第一个登录的用户,所以界面元素的布局和字体粗细都发生了变化,到处都在一点点,但结果却导致了很大的差异。尽管字体和屏幕分辨率是标准化的。 我从另一位开发人员(他的 dpi 与我的 dpi 不同)接手了这个项目 - 他的 DPI 设置保留在测试机器和测试配置文件上。这并不容易追踪,因为我在我自己的用户下使用正常设置的测试机器,并且测试是使用测试用户运行的。 不过@Dan Mašek的回复在一定程度上帮助我整理了解决思路,分解了问题,谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.