我是一名新手java学习者。我正在尝试为一个简单的迷你游戏开发机器人(或教练,无论如何),我需要分析屏幕上的图像并按下相应的动作。因此: -
我首先尝试使用sikuli ScreenRegion,但它并没有像预期的那样。我尝试的是这样的: -
if(arrowSet.find(oneDown)!=null)
{
r.keyPress(KeyEvent.VK_DOWN);
r.keyRelease(KeyEvent.VK_DOWN);
r.delay(20);
}
但它只是跳到了动作,即使条件是假的。我的ScreenRegion应用程序在这种情况下是错误的吗?或者我应该使用与sikuli不同的东西吗?
答案 0 :(得分:4)
如果不需要使用Java并且您在Windows下工作,则可以考虑使用Automa - 用于UI自动化的Python工具/库。它允许对图像进行操作。
例如,要查明屏幕上是否存在图像:
Image("arrow_screenshot1.png").exists() # returns True or False
点击图片:
click(Image("arrow_screenshot1.png"))
找出图像坐标/中心:
Image("arrow_screenshot1.png").x # returns x-coordinate
Image("arrow_screenshot1.png").y # returns y-coordinate
Image("arrow_screenshot1.png").center # returns Point object
要等到屏幕上出现图像:
wait_until(Image("arrow_screenshot1.png").exists)
等
我认为使用Automa可以轻松实现您的需求!
免责声明:我是Automa的开发者之一
答案 1 :(得分:2)
想出来,伙计们!似乎sikuli的图像识别是模糊的。它不会与targetImage.setMinRank(1.00)
无法合作,但当我尝试使用targetImage.setMinRank(0.99)
运行程序时,它都流畅地工作。谢谢你的帮助。