Перейти к содержимому

Фотография

Распознование обьекта по его иконке


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 12

#1 Dumbldor

Dumbldor

    Новый участник

  • Members
  • Pip
  • 33 сообщений
  • ФИО:Егоров Андрей
  • Город:Санкт-Петербург

Отправлено 25 апреля 2006 - 08:49

Доброго всем времени суток.
Меня интересует наличие возможности у WR распозновать обьекты по их графическому отображению (например иконке). Другими словами интересует возможность кликнуть в область экрана, являющуюся определенным набором пикселей.
Вопрос не критичен, при отсутствии такой возможности у WR буду кликать в координаты, но согласитесь... если есть конкретный обьект (даже графический), это значительно удобней и приятней =)

:focus:
  • 0

#2 SergeyP

SergeyP

    Специалист

  • Members
  • PipPipPipPipPip
  • 651 сообщений
  • Город:Москва

Отправлено 25 апреля 2006 - 10:16

А ф-ция
obj_check_bitmap("....
Вам не подходит ?

Или Вы хотите что-то другое ?
  • 0

#3 Mike

Mike

    Консультант

  • Members
  • PipPipPipPipPipPip
  • 1 079 сообщений
  • Город:Москва

Отправлено 25 апреля 2006 - 10:46

На 99% уверен, что нет такой встроенной функции. Можно, конечно, написать такое самому (во внешней DLL), но работать будет уж очень медленно (ну, либо нужно полноценное распознавание образов).
  • 0
Best regards,
Майк.

#4 Dumbldor

Dumbldor

    Новый участник

  • Members
  • Pip
  • 33 сообщений
  • ФИО:Егоров Андрей
  • Город:Санкт-Петербург

Отправлено 25 апреля 2006 - 11:12

Это не совсем то.
Ф-я obj_check_bitmap ищет соотвецтвие графических обьектов в конкретных, указанных мной координатах, да еще к обьекту привязывается в который я кликаю.
А мне хотелось бы наоборот. Чтобы WR находил сохраненное заранее графическое изображение и кликал в его центр например. Как еще одно свойство классов в GUI configuration. =)
  • 0

#5 SergeyP

SergeyP

    Специалист

  • Members
  • PipPipPipPipPip
  • 651 сообщений
  • Город:Москва

Отправлено 25 апреля 2006 - 11:15

2 Mike
А чем "obj_check_bitmap" Вас не устраивает ?
Надо только предварительно набрать изображения по всем интересуюшим объектам и пройти по ним...

Вообще-то, "...хотелось бы заслушать начальника Транспортного цеха..." :focus: , что же он все-таки хочет ?
Если нужны ф-ции получения части изображения с экрана или целиком всего экрана в виде файла, то они входят в состав cso2lib
А уж сравнить этот файл с эталонным - это дело техники...
  • 0

#6 Dumbldor

Dumbldor

    Новый участник

  • Members
  • Pip
  • 33 сообщений
  • ФИО:Егоров Андрей
  • Город:Санкт-Петербург

Отправлено 25 апреля 2006 - 11:16

На 99% уверен, что нет такой встроенной функции. Можно, конечно, написать такое самому (во внешней DLL), но работать будет уж очень медленно (ну, либо нужно полноценное распознавание образов).

Просмотр сообщения


Понятно, я почти в этом не сомневался... =(
но на всяк случай решил спросить.
Думаю в некоторых ситуациях, такая функция была бы удобна.
Спасибо.
  • 0

#7 Dumbldor

Dumbldor

    Новый участник

  • Members
  • Pip
  • 33 сообщений
  • ФИО:Егоров Андрей
  • Город:Санкт-Петербург

Отправлено 25 апреля 2006 - 11:29

Господа, запутали меня совсем =)
чего я хочу:
1) у меня в какой-то папочке лежит набор имеджей (это мои обьекты)
2) в процессе выполнения скрипта WR понимает, что в открывшемся окне есть какой-то из сохраненных имеджей (обьектов) и кликает по нему.
т.е. папочка это такая самодельная GUI map.

вроде все понятно написал... =)

меня интересовало есть ли такая встроенная ф-я, но я так понимаю что таковой точно нет. А следовательно, что делать если я хочу придерживаться данной схемы? Каким функциями посоветуете пользоваться? Может примерный алгоритм подскажите....
  • 0

#8 SergeyP

SergeyP

    Специалист

  • Members
  • PipPipPipPipPip
  • 651 сообщений
  • Город:Москва

Отправлено 25 апреля 2006 - 12:18

2 Dumbldor

Теперь понятно, что Вы хотите... :focus:
В таком случае, я бы подключил к WR бибилиотеку cso2lib, из которой понадобится только одна ф-ция "CaptureAreaToFile".
Ес-но, что известны габариты имеджей в Вашей коллекции и предположим, что габариты одинаковые
А теперь собственно алгоритм:

- взять габариты области, в которой надо найти имидж из коллекции
- начальная точка соответствует левому верхнему углу области
- сделать цикл прохождения по этой области
- вырезать с помощью "CaptureAreaToFile" область, соотв.габариту имиджа, и положить в файл (f1)
- пройти по коллекции имиджей и сравнить бинарно f1 (для этого надо воспользоваться командой DOS "fc /b..." или написать свою ф-цию и положить в DLL) с каждым имиджем из коллекции (я исхожу из того, что имиджы представлены в виде файлов)
- если сравнение не прошло, то сместить вырезаемую область на один пиксел
и продолжить цикл.


Удач !
  • 0

#9 Deman

Deman

    Активный участник

  • Members
  • PipPip
  • 104 сообщений
  • ФИО:Трошков Дмитрий Ростиславович

Отправлено 25 апреля 2006 - 12:53

Дааааааааа, конечно человека вы конкретно и реально запутали. Ща он вам понаделает. Есть ведь наверное функция, как "CaptureBitmap" или что-то типа этого. По моему надо действовать так:

1) Если ты знаешь класс объекта, то получить лист всех объектов этого класса. Если не знаешь, то взять все объекты без класса.
2) Применять к объектам листа функцию "CaptureBitmap"
3) Сравнивать полученную картинку и исходную
4) Если совпадает, то объект найден.

И не надо тут мудрить с попиксельным сканированием всего монитора.

По моему я ясно выразился.
  • 0

#10 SergeyP

SergeyP

    Специалист

  • Members
  • PipPipPipPipPip
  • 651 сообщений
  • Город:Москва

Отправлено 25 апреля 2006 - 13:07

2 Deman
Все зависит от того, как были получены имиджы. Если с использованием геометрии объектов, тогда я с Вами согласен, а если области вырезались с экрана примерно над объектом, тогда Ваш способ не подходит.
  • 0

#11 Deman

Deman

    Активный участник

  • Members
  • PipPip
  • 104 сообщений
  • ФИО:Трошков Дмитрий Ростиславович

Отправлено 25 апреля 2006 - 14:16

Согласен.

По моему не стоит вырезать с экрана какой-то кусок. Поиск иконки попиксельно по экрану может занять много времени. Хотя ХЗ. Может и нормально работать, если сделать нормальный алгоритм поиска. И такие алгоритмы есть. Есть даже алгоритмы пописка, если размеры не соответствуют, это уже поиск образа или шаблона. И т.д. и т.п.
  • 0

#12 Dumbldor

Dumbldor

    Новый участник

  • Members
  • Pip
  • 33 сообщений
  • ФИО:Егоров Андрей
  • Город:Санкт-Петербург

Отправлено 26 апреля 2006 - 11:38

Спасибо большое за помощь и проявление интереса к данному топику, приятно общаться со знающмим людьми.
Правда пока эту тему закрою =) буду кликать в координаты экрана. Просто нет времени пока заниматься сравнением изображений. Тем более что я не давно с WR работаю и возможно эта разработка отнимет у меня много времени =)

Большое всем спасибо =)

:friends:
  • 0

#13 SergeyP

SergeyP

    Специалист

  • Members
  • PipPipPipPipPip
  • 651 сообщений
  • Город:Москва

Отправлено 26 апреля 2006 - 11:48

Спасибо большое за помощь и проявление интереса к данному топику, приятно общаться со знающмим людьми.
  Правда пока эту тему закрою =) буду кликать в координаты экрана. =)
 
Большое всем спасибо =)

:friends:

Просмотр сообщения


И Вам спасибо за интересный вопрос ! Возможно мне придется в самое ближайшее время заниматься решением именно этой проблемы - если тупо перебирать пикселы на уровне TSL - это, действительно, займет много времени.
А Вам, в свою очередь, настоятельно рекомендую не "..кликать в координаты экрана..", а использовать виртуальные объекты и уже работать с ними, это более правильный подход. Тем более, что в библиотеке cso2lib есть, например, ф-ции получения значения с элемента виртуального списка и т.д.

Удач !
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных