Вероятность совпадения и координаты точки нажатия


(Paul Manuilenko) #1

Как задать вероятность совпадения (0…1) и как выбрать пиксель, точку на картинке, куда нажмет Sikuli (в команде status.click(“D:\img\role.png”); )

import org.sikuli.script.Screen;
...
...
    @Test(enabled = true)
    public static void test(){
        Screen status = new Screen();
        try
        {
            status.click("D:\\img\\role.png");
        }
        catch(Exception e){
            e.printStackTrace();
        }
    }

(Sergey Korol) #2

Не знаю, для кого недавно постил тему, но сервер содержит обертку над sikulixapi, где можно посмотреть, как вообще задаются объекты для поиска.

    private Pattern createImage(final Image element) {
        return new Pattern(element.getPath()).similar(element.getSimilarity());
    }

Sikuli по сути ищет изображение по заданному Pattern с необходимым уровнем similarity, который в свою очередь варьируется от 0 до 1. 100% сходство = 1. Но в большинстве случаях max значение бесполезно, ведь в качестве эталона мы задаем сжатые изображения, которые хоть на пиксель, но будут отличаться от части той области, что задаст Sikuli в качестве полотна для поиска. Обычно беру число из интервала 0.8 - 0.9.


(Paul Manuilenko) #3

Спасибо большое, а как же выбрать пиксель на картинке, куда именно нужно произвести клик?


(Sergey Korol) #4

Из официальной Sikuli документации:

targetOffset(dx, dy)

Return a new Pattern object containing the same attributes (image, similarity), but a different definition for the click. By default, the click point is the center of the found match. By setting the target offset, it is possible to specify a click point other than the center. dx and dy will be used to calculate the position relative to the center.

Parameters:
dx – x offset from the center
dy – y offset from the center

Returns:

a new pattern object

П.С. Для “спасибо” есть специальная кнопка. :wink: