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

Фотография

Сравнение изображения и окна


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

#1 iamvms

iamvms

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

  • Members
  • Pip
  • 2 сообщений

Отправлено 20 марта 2008 - 12:56

Доброго времени суток. Прочитал почти все темы, но так и не нашел нужного мне. У меня такой вопрос. Приложение написано на Delphi 7, использую TC 5.14. Такой вопрос:
У меня есть изображение окна, сохраненное на жестком диске и само окно в приложении, мне надо их сравнить и выдать результат. Все было бы отлично и можно было бы воспользоваться Region.Compare, но есть одна неприятность. На окне программы отображается время (равное системному). А на сохраненной картинке время соответственно другое. Можно ли как-то сравнить не просто две картинки один в один, а как бы их выделенные фрагменты? Чтобы системная дата не попадала в выделенные для сравнения фрагменты? Спасибо большое за ответы. Уже 2 дня над этой проблемой бьюсь.
  • 0

#2 KaNoN

KaNoN

    АЦЦКИЙ СОТОНА

  • Members
  • PipPipPipPipPipPip
  • 1 260 сообщений
  • ФИО:Колесник Николай
  • Город:Днепропетровск > Киев > Лондон

Отправлено 20 марта 2008 - 13:20

Доброго времени суток. Прочитал почти все темы, но так и не нашел нужного мне. У меня такой вопрос. Приложение написано на Delphi 7, использую TC 5.14. Такой вопрос:
У меня есть изображение окна, сохраненное на жестком диске и само окно в приложении, мне надо их сравнить и выдать результат. Все было бы отлично и можно было бы воспользоваться Region.Compare, но есть одна неприятность. На окне программы отображается время (равное системному). А на сохраненной картинке время соответственно другое. Можно ли как-то сравнить не просто две картинки один в один, а как бы их выделенные фрагменты? Чтобы системная дата не попадала в выделенные для сравнения фрагменты? Спасибо большое за ответы. Уже 2 дня над этой проблемой бьюсь.

У каждого оконного объекта есть метод Picture, которому в качестве параметров можно передавать координаты прямоугольной области, в которой надо снять изображение. С помощью этих параметров вы можете извлечь только ту область, которая вам нужна. И сравнивать изображения, соответственно, только заданных областей
  • 0

#3 modbear

modbear

    Специалист

  • Members
  • PipPipPipPipPip
  • 548 сообщений

Отправлено 20 марта 2008 - 13:25

В методе Regions.Compare есть параметр Transparent. Если он True, то TC при сравнении игнорирует фрагменты изображений, имеющих тот же цвет, что и левый верхний пиксел 1й картинки. Т.е. Вам надо сделать следующее:
1) Закрасить фрагменты сохраненной картинки, которые не надо использовать при сравнении, каким-нибудь цветом, которого больше нет на картинке. Ярко-красным, например.
2) Закрасить верхний левый пиксел изображения тем же цветом.
3) При вызове метода Regions.Compare в качестве 3го параметра (Transparent) передать True:

Regions.Compare("ImageNameInRegions", onscreenObj, true)

См. также описание метода Regions.Compare, в т.ч. параметра Transparent, в справке.
  • 0

#4 iamvms

iamvms

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

  • Members
  • Pip
  • 2 сообщений

Отправлено 20 марта 2008 - 18:03

Спасибо за советы. Transperent действительно помог. :smile:
  • 0


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

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