Что нового

ImageSearch.au3 и все что связано с этой библиотекой

Автор
Belfigor

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
А работает оно очень медленно вероятно из-за самой ImageSearch. Рекомендую вырезать все запросы ImageSearch, заменить их пустышками и замерять сколько времени на отработку уходит для остального кода. Я бы вообще рекомендовал избегать использования данной библиотеки за исключением уж очень критичных и сложных случаев.
 

pro100leto

Новичок
Сообщения
8
Репутация
0
ImageSearch.au3 выдаёт ошибку

Всё сделано как тут
http://autoit-script.ru/index.php/topic,175.0.html

выдаёт ошибку
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Re: ImageSearch.au3 выдаёт ошибку

ну и задал бы свой вопрос в той теме.
 
Автор
Belfigor

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Попробуй все dll что представлены в теме.
 

Rubzel

Новичок
Сообщения
4
Репутация
0
Подскажите как можно вызвать функцию ImageSearch из Delpi?
Может кому-то приходила в голову такая дурацкая идея?
основываясь на таком
Код:
ImageSearch($findImage,$resultPosition,ByRef $x, ByRef $y,$tolerance)
синтаксисе вызова функции пытаюсь
вызвать в Delphi так:
Код:
a:=ImageSearch(FileName,0,x,y,0);
Естественно переменные имеют правильные типы (ну по моему правильные)
Код:
var
  a: integer;
  x,y: integer;
  FileName: String;

implementation

function ImageSearch(findImage:String, resultPosition, x, y, tolerance: Integer):integer; stdcall; external '.\ImageSearchDLL.dll';

Однако так ничего не получется, выдаёт ошибку Read of Adres 0000000

Просмотрев файл ImageSerch.au3 нашёл другой способ вызова процедуры (в котором переменные вставлены как бы в обратном порядке)
Код:
$result = DllCall("ImageSearchDLL.dll","str","ImageSearch","int",$x1,"int",$y1,"int",$right,"int",$bottom,"str",$findImage)

Переделал соответствующим образом и свой код Delphi. Ошибку выдавать перестало но результат выполнения функции абсолютно неравен 0/1 и всегда один и тот же (независимо от нахождения картинки на экране)

Может быть сможет кто-нибудь помочь?

Заранее извиняюсь если вдруг написал не в ту тему.
 

cnm

Новичок
Сообщения
58
Репутация
2
Подскажите как можно вызвать функцию ImageSearch из Delpi?

А зачем вам нужно делать это через жопу?
Простой гугло поиск выдает

http://www.sql.ru/forum/781739-2/poisk-kartinki-v-kartinke
 

Rubzel

Новичок
Сообщения
4
Репутация
0
Такой метод будет работать очень медленно, думал ImageSearh будет быстрее
 

cnm

Новичок
Сообщения
58
Репутация
2
с чего вы взяли?

imageseasrch использует похожий алгоритм. и как было написано в инструкции работает медленно.
 

Rubzel

Новичок
Сообщения
4
Репутация
0
Данный код в 10 раз медленнее чем ImageSearch.
Нашёл более быстрые реализации данной операции, но там тоже есть свои минусы.
А главное нет такого параметра, как "толлерантность". Вот именно из-за него и заинтересовался этой библиотекой.
Так что вопрос оставляю открытым:
Как обратиться к функциям DLL библиотеки ImageSearch из других сред программирования, в частности Delphi?
 

Rubzel

Новичок
Сообщения
4
Репутация
0
Всем спасибо за помощь. Уже разобрался.
Конечно некоторые параметры и результаты работы функции странные, но использовать можно.
Ещё раз спасибо.
 
Автор
Belfigor

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Сложный вопрос, там уже наверное проще посчитать контрольную какую-то сумму пикселей, минимальное и максимальное количество при всех вариантах поворота от этого уже прыгать
 

kvitnitskiy

Новичок
Сообщения
56
Репутация
0
Вот проверка на 4 нужных пикселя при нахождение первого подходящего под описание первого из четырех пикселей. То есть сначала функция будет искать пиксель с цветом: 0xCCCCCC, далее обнаружив его проверит находящиеся от него справа три пикселя чтобы 2-й соответствовал цвету 0xECE9D8, 3-й 0xFFFFFF, а 4-й 0xECE9D8. Если цвета всех пикселей совпадут он скажет что нашел их и подвинет туда мышку. Если же 2-й, 3-й или 4-й пиксели не совпадут по цвету, поиск будет завершен.
То что надо, Но встречный вопрос, как это зациклить, что бы поочередно обрабатывало все совпадения ? КОмбинация пикселов появляется постоянно (брауз игрушка).
for to next, while wend - не рабтает.
 

Vagac

Новичок
Сообщения
14
Репутация
0
Помогите разобраться с параметрами ImageSearch всю ветку прочел но так и не понял какой параметр за что отвечает вот _ImageSearch($SearchF1, 1, $x, $y, 0)

$SearchF1 -это файл bmp который ищется
$x, $y, кординаты окна в котором ищется картинка
непонятно что за параметры 1 и 0
мне надо задать область поиска картинки что бы не по всему экрану искал а в определенном квадрате сам не смог разобратся.
пробовал изменять крдинаты $x, $y, но поиск все равно происходит по всему окну.
 

vlados552

Новичок
Сообщения
1
Репутация
1
Помогите разобраться с параметрами ImageSearch
_ImageSearch($findImage,$resultPosition,ByRef $x, ByRef $y,$tolerance)
$findImage - файл
$resultPosition - указывает какие возвращать координаты x,y. При 1 - центр картинки, 0 - левый верхний край картинки
$tolerance - значения от 0 до 255. (при 0 - без изменений глубины цвета). Необходимо, когда глубина цвета картинки отлична от цветов раб. стола. Например Gif
$x $y - в эти переменные будут записаны координаты найденной картинки.
мне надо задать область поиска картинки что бы не по всему экрану искал а в определенном квадрате сам не смог разобратся.
Тогда тебе нужно использовать _ImageSearchArea($findImage,$resultPosition,$x1,$y1,$right,$bottom,ByRef $x, ByRef $y, $tolerance), где
$findImage - файл
$resultPosition - указывает какие возвращать координаты x,y. При 1 - центр картинки, 0 - левый верхний край картинки
$x1,$y1 - левые верхние координаты области
$right,$bottom - правые нижние соответственно
$x $y - в эти переменные будут записаны координаты найденной картинки
$tolerance - значения от 0 до 255. (при 0 - без изменений глубины цвета). Необходимо, когда глубина цвета картинки отлична от цветов раб. стола. Например Gif
 

DanSaratov

Новичок
Сообщения
112
Репутация
1
ImageSearch by mousekey.rar
Не могу скачать пишет ошибка
 
Автор
Belfigor

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
ссылку на пост где выложено дай
 

noob

Новичок
Сообщения
17
Репутация
0
Belfigor сказал(а):
PixelChecksum - никак не заменит ImageSearch.
Код:
Opt("MustDeclareVars", 1)
Dim $Color[4] = [0xCCCCCC, 0xECE9D8, 0xFFFFFF, 0xECE9D8]
Dim $Shade[4] = [5, 5, 5, 5]
Example(10, 10, 1500, 1500)
Func Example($x1, $y1, $x2, $y2)
    Local $var = PixelSearch($x1, $y1, $x2, $y2, $Color[0], $Shade[0])
    If Not @error Then
        For $i = 1 To 3 Step 1
            $var = PixelSearch($var[0]+1, $var[1], $var[0]+1, $var[1], $Color[$i], $Shade[$i])
            If Not @error Then
                If $i = 3 Then
                    MouseMove($var[0], $var[1])
                    MsgBox(0,"","Found")
                Else
                    ContinueLoop
                EndIf
            Else
                MsgBox(0,2,"Not Found")
                ExitLoop
            EndIf
        Next
    Else
        MsgBox(0,1,"Not Found")
    EndIf
EndFunc

Здравствуйте, я переделал немного код под себя, но так и не добился удачной попытки поиска, в чём может быть проблема:
Код:
Opt("MustDeclareVars", 1)
Dim $Color[4] = [0xAFA185, 0x9A8965, 0x9A8965, 0x9A8965]
Dim $Shade[4] = [5, 5, 5, 5]
Example(0, 0, 1200, 700)
Func Example($x1, $y1, $x2, $y2)
    Local $var = PixelSearch($x1, $y1, $x2, $y2, $Color[0], $Shade[0])
    If Not @error Then
        For $i = 1 To 3 Step 1
            $var = PixelSearch($var[0]+1, $var[1], $var[0]+1, $var[1], $Color[$i], $Shade[$i])
            If Not @error Then
                If $i = 3 Then
                    MouseMove($var[0], $var[1])
                    MsgBox(0,"","Found")
                Else
                    ContinueLoop
                EndIf
            Else
                MsgBox(0,2,"Not Found")
                ExitLoop
            EndIf
        Next
    Else
        MsgBox(0,1,"Not Found")
    EndIf
EndFunc

#cs
данные пикселей:
998,318,0xAFA185
999,318,0x9A8965
1000,318,0x9A8965
1001,318,0x9A8965
#ce
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
noob,
Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
autoit.gif
(подробнее), а обычный код соответственно в тег [code]
code.gif
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
spoiler.gif
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Глобальный модератор.




Предупреждение За нарушение общих правил (пункт В.2):
Старайтесь избегать “Over quoting” (преувеличенное цитирование) - цитируйте только необходимую часть сообщения, которая наилучшим образом подчеркнёт суть цитируемого.


С уважением, ваш Глобальный модератор.
 

takse

Новичок
Сообщения
12
Репутация
0
Belfigor сказал(а):
Вот собственно, увидел в ботоводческих разделах вопрос про то где взять ImageSearch.au3.
Ниже прикреплен файл. Там эта UDF в полной комплекции + примеры. Скажу от себя. Мы с господином Арчибальдом стараемся как можно реже использовать ImageSearch.au3 и всячески избегать взаимодействия с ней путем дописывания своих маленьких модулей на конкретную задачу базирующихся на PixelSearch или же PixelGetColor.
Почему?
1) Потому что скорость с которой работает ImageSearch нас не устраивает.
2) Иногда проще обойтись проверкой 3-4 контрольных точек и результат будет как минимум таким же как при ImageSearch, а то и быстрее.

Давайте писать в этой теме все на ваше мнение "за" и "против" этой библиотеки + делится опытом работы с ней и патчами на неее написанными если у кого есть :smile:

upd - 06.01.2013:

Добавлен модифицированный пользователем mousekey вариант ImageSearch.au3. Ссылка на сообщение

Вы меня конечно извините, но я скоро форум до дыр протру и так и не найду где же скачать мне ImageSearch.au3.
Не могу найти где же это "ниже" где приклеплен файл.

Так же не могу скачать PixelSearchEx.au3, нету ссылки на скачивание файлов.

Вот что я вижу при открытии темы
 
Автор
Belfigor

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Видимо хранилище файлов пострадало :(


Добавлено:
Сообщение автоматически объединено:

Хвала тому что я хомяк


Добавлено:
Сообщение автоматически объединено:

Обновил первый пост восстановив файлы


Добавлено:
Сообщение автоматически объединено:

добавил дллку для x64
 

Вложения

  • ImageSearch by mousekey.rar
    1.6 КБ · Просмотры: 97
  • PixelSearchEx v1.2.rar
    3.7 КБ · Просмотры: 63
Верх