Найти координаты соответствия изображения с помощью sikuli в Java
Мне нужно получить координаты совпавшего изображения в пределах фактического изображения, чтобы я мог выполнять над ним операции. Тем не менее, я попробовал ниже два подхода, но оба, кажется, не работают:
Подход 1: Используя ниже, я могу найти совпадение, но возвращаемые координаты - это только ширина и высота сопоставляемого изображения (которое я уже знаю). Я хочу получить то же самое в реальном изображении.
BufferedImage actualImg = ImageIO.read(new File("C:/Images/SrcImg.PNG"));
ImageTarget actualTgt = new ImageTarget(actualImg);
BufferedImage searchImg = ImageIO.read(new File("C:/Images/TgtImg.PNG"));
ImageTarget searchTgt = new ImageTarget(searchImg);
ScreenRegion scrReg = new StaticImageScreenRegion(actualTgt.getImage());
ScreenRegion resReg = scrReg.find(searchTgt);
ScreenLocation center = resReg.getCenter();
System.out.println(":getElementFromImage: x_loc,y_loc =["+center.getX()+","+center.getY()+"]");
Подход 2: В приведенном ниже коде я попробовал с sikulix Finder. Однако с этим src.hasNext() вернул true, НО src.next() выдал исключение nullpointer. Не уверен, что здесь проблема:
Finder src = new Finder("C:/Images/SrcImg.PNG");
Pattern pat = new Pattern("C:/Images/TgtImg.PNG").similar(0.5);
src.find(pat);
Match m;
while( src.hasNext())
m = src.next();
src.destroy();
java.lang.NullPointerException
at org.sikuli.script.Finder.next(Finder.java:484)
at com.work.ImageFinder.main(ImageFinder.java:38)
Я уже потратил много времени на эту работу. Любая помощь приветствуется.
Спасибо!
1 ответ
Он отлично работает после передачи региона в Finder, как показано ниже:
Finder src = new Finder("C:/Images/SrcImg.PNG", new Region(0,0,<width>,<height>))
Pattern pat = new Pattern("C:/Images/TgtImg.PNG").similar(0.5);
src.find(pat);
Match m;
while( src.hasNext())
m = src.next();
src.destroy();
Более подробную информацию можно найти ниже по ссылке: Можно ли использовать Sikuli, чтобы утверждать, что изображения одинаковы в режиме без графического интерфейса?