Итак, у меня проблема с Сикули. Существует ситуация, когда существует многократное появление изображения. Чтобы захватить все из них, вы можете просто найти findAll, но он сохраняет каждое изображение как нечто вроде объекта, а не изображения. Я знаю, что вы можете получить изображения с помощью getLastMatches(), но я хочу сначала отсортировать их. Итак, вот код, который я получил, который захватывает все изображения и сортирует их. Я нашел некоторую информацию о документации SikuliПреобразование объектов итератора из findAll в изображения в Сикули после сортировки
def by_y(match):
return match.y
icons = findAll(image)
sorted_icons = sorted(icons, key=by_y)
Проблема с этим, однако, является то, что sorted_icons содержит кучу итерацию объектов (по крайней мере, это то, что я видел их называют), а не изображения. Есть ли способ вернуться к изображению, сохранив сортировку нового списка? Использование getLastMatches() дает список исходного несортированного списка.
Кроме того, это Sikuli 1.0.1.
Спасибо.
Это должно проиллюстрировать проблему (надеюсь). Чтобы сортировать изображения по их значению y, я должен использовать операцию findAll() (если есть способ сделать это, не используя find, то, пожалуйста, поделитесь). Тем не менее, это преобразует изображение из строки, то есть:
"imagename.png"
в ... ну все, это (матч):
M[8,1045 37x28]@S(S(0)[0,0 1920x1080]) S:1.00 Center:26,1059
self.assets.getimage (изображение) функция требует строка (хотя и imagename.png), а не напуганная вещь, которую вы получаете от использования find.
def exampleMethod(image, dx=0, dy=0):
click(Pattern(self.assets.getimage(image)).targetOffset(dx, dy))
def by_y(match):
return match.y
image = "imagename.png"
icons = findAll(image)
sorted_icons = sorted(image, key=by_y)
exampleMethod(sorted_icons[0])
Поэтому мне нужно 1 из 2 вещей:
- способ преобразовать объект найти обратно в строку после сортировки
- образом сортировать изображения их у значений, сохраняя при этом изображения в виде строк
Надеюсь, это поможет.
Мои спросить, что вы хотите делать с изображениями? Операция 'find' или' findAll' использует шаблон/рисунок/скриншот или строку в качестве типа ввода и возвращает (а) совпадающие объекты (объекты), через которые вы можете выполнить почти все, что может предложить Sikuli ... – autoKarma
есть много ранее существовавших методов, для которых изображение не является образцом. Каждый из них использует методы поиска (наряду с собственными методами, похожими на find). Я бы поставил некоторые операторы if, чтобы справиться с этим, но это было бы много изменений, которые я бы предпочел не делать. Поэтому я бы предпочел, чтобы иметь возможность просто преобразовывать их обратно в изображения и отправлять их методам – user2869231
Я не уверен, что я понятен - в чем разница между изображением и шаблоном? В приведенном выше примере 'icons = findAll (изображение)' the image 'здесь имеет тип Pattern. В отличие от этого, если вы скажете: iconNames = findAll («IconTitle»), тогда IconTitle будет иметь тип String. Только два типа операции findAll() - это шаблон и строка. Вы имеете в виду образ и образ, чтобы быть одним и тем же? – autoKarma