четверг, 21 января 2010 г.

[comp.prog.wow] Sikuli: программирование в картинках

Приходилось ли вам видеть когда-нибудь вот такие программы:

И думали ли вы вообще, что можно программировать вот так? ;)

Теперь можно. В MIT's Computer Science and Artificial Intelligence Lab развивается проект под названием Sikuli (“Глаз Бога” на языке мексиканских индейцев). В рамках этого проекта созданы:

  • Sikuli Search – справочная система, которая ищет информацию по скриншоту (т.е. выделяете на экране какое-нибудь диалоговое окно Windows, а Sikuli Search ищет справку по этому окну в своих архивах), и
  • Sikuli Script – производный от Python-а язык для автоматизации действий пользователя с использованием скриншотов. Как раз приведенный выше пример кода показывает, как выглядят подобные программы.

Для создания еще большего впечатления приведу пару примеров из работы Sikuli: Using GUI Screenshots for Search and Automation:

  1. Удаление документов нескольких типов текущей папки в корзину:
     
    Здесь сначала определяются значки тех типов документов, которые мы хотим удалить. Потом в окошке ищутся значки этих типов и каждый найденный значок перетягивается на иконку “Recycle Bin”.
  2. Контроль за тем, что автобус приехал в нужную точку (с помощью отображения движения автобуса на основе GPS):

    Тут все просто. Сначала задается финальная точка маршрута. Затем периодически ищется значок текущего местоположения автобуса. Если этот значок не достиг финальной точки, то делается пауза.

Вот такая вот забавная штука.

При всей своей забавности, она может найти свое применение, например, в автоматизированном тестировании программ. И работа GUI Testing Using Computer Vision как раз описывает возможности использования Sikuli в этой области.

Первоисточник: Dr.Dobb’s: Picture-Driven Computing.

PS. Понравилось еще и то, какая сборная солянка была использована при работке Sikuli Script (включая и специализированную IDE для написания скриптов): алгоритм сопоставления картинок был реализован на C++, затем все это было обернуто в Java, на основе Java API была написана Python-овая библиотека, редактор был создан с использованием Java Swing, а для исполнения скриптов задействовали Jython.

Отправить комментарий