在屏幕上查找图像

时间:2013-08-07 08:49:32

标签: java image sikuli

我是一名新手java学习者。我正在尝试为一个简单的迷你游戏开发机器人(或教练,无论如何),我需要分析屏幕上的图像并按下相应的动作。因此: -

我首先尝试使用sikuli ScreenRegion,但它并没有像预期的那样。我尝试的是这样的: -

if(arrowSet.find(oneDown)!=null)
{
    r.keyPress(KeyEvent.VK_DOWN);
    r.keyRelease(KeyEvent.VK_DOWN);
    r.delay(20);
} 

但它只是跳到了动作,即使条件是假的。我的ScreenRegion应用程序在这种情况下是错误的吗?或者我应该使用与sikuli不同的东西吗?

2 个答案:

答案 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)运行程序时,它都流畅地工作。谢谢你的帮助。