Найти координаты соответствия изображения с помощью sikuli в Java - PullRequest
0 голосов
/ 08 октября 2018

Мне нужно получить координаты совпавшего изображения в пределах фактического изображения, чтобы я мог выполнять над ним операции.Тем не менее, я попробовал ниже два подхода, но оба, похоже, не работают:

Подход 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 Ответ

0 голосов
/ 09 октября 2018

Работает нормально после передачи региона в 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, чтобы утверждать, что изображения одинаковы в графическом интерфейсебез-режим?

...