要使用 Sikuli,您需要
- 将在其上搜索其他图像的基础图像。
- 将在另一个图像中搜索的图像。
如果图像 1 是您的本地资源图像,您可以创建一个 org.sikuli.Finder 实例,其中包含图像的路径和将被搜索的该图像的区域。
示例(java 级别):
finder = new Finder("path/to/image", new Region(0, 0, <imgwidth>, <imgheight>));
如果图像 1 是您的流,您必须以某种方式从中制作一个 BufferedImage(我不知道最好的方法)。
然后,您可以借助 java.awt.Rectangle 和 org.sikuli.Region 从此 BufferedImage 制作 org.sikuli.ScreenImage。
finder = new Finder(new ScreenImage(new Rectangle(0,0,<imgwidth>,<imgheight>), bufferedImage), new Region(0,0,<imgwidth>,<imgheight>))
从图像 1 创建查找器后,您可以在此图像中搜索图像 2。
同样,您有两种可能性。
如果第二张图片是您的本地资源图片,您可以使用文件位置创建一个 org.sikuli.Pattern 对象:
pattern = new Pattern("path/to/image.png");
否则,如果这是您的流,您必须以某种方式从流中创建一个 BufferedImage。然后,您可以从此图像创建图案:
pattern = new Pattnern(bufferedImage);
作为最后一步,您现在可以运行查找器来搜索模式:
finder.find(pattern);
您可以通过以下方式检查查找器是否找到任何内容:
finder.hasNext();
您应该能够通过以下方式迭代所有发现:
for (Match m : finder):
//do something with the match
我希望我能帮助你,尽管你的问题已经有几个星期了。