1 (изменено: Malcev, 2023-03-12 18:53:33)

Тема: AHK: поиск картинки с IDXGIOutputDuplication + Gdip_FastImageSearch

Тема для обсуждения "поиск картинки с IDXGIOutputDuplication + Gdip_FastImageSearch".
http://forum.script-coding.com/viewtopic.php?id=17670

2

Re: AHK: поиск картинки с IDXGIOutputDuplication + Gdip_FastImageSearch

Круто, а оно может находить все совпадения?
И пробовал png, не находит.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

3

Re: AHK: поиск картинки с IDXGIOutputDuplication + Gdip_FastImageSearch

Сделал вроде как поудобнее и добавил поиск всех совпадений.
У меня png находит.
По идее скрипту всё-равно в каком формате картинка будет.

4

Re: AHK: поиск картинки с IDXGIOutputDuplication + Gdip_FastImageSearch

У меня первый пост выглядит теперь как троеточие.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

5

Re: AHK: поиск картинки с IDXGIOutputDuplication + Gdip_FastImageSearch

Поправил.

6

Re: AHK: поиск картинки с IDXGIOutputDuplication + Gdip_FastImageSearch

Malcev, скажите пожалуйста, в чём его превосходство перед стандартным ImageSearch?
Скорость?

7 (изменено: Malcev, 2020-10-12 14:17:04)

Re: AHK: поиск картинки с IDXGIOutputDuplication + Gdip_FastImageSearch

По идее да.
Надо тестировать на конкретных примерах.
Получение снимка экрана точно быстрее.
Ну и по-моему сам подход у меня логичней, так как я разделил скрипт на 3 части, первая - подготовка картинок для поиска, второе - получение экрана по современному апи, третье - сам поиск (вот тут могут быть косяки со скоростью).
Для самого поиска на входе ничего больше кроме scan+stride не надо, поэтому я убрал оттуда простыню лишних преобразований.

8

Re: AHK: поиск картинки с IDXGIOutputDuplication + Gdip_FastImageSearch

Malcev пишет:

(вот тут могут быть косяки со скоростью).

Так а почему просто не сравнить однократный поиск большого изображения ImageSearch и всего твоего кода?

Foma пишет:

Malcev, скажите пожалуйста, в чём его превосходство перед стандартным ImageSearch?

Думаю даже если этот тест будет в пользу ImageSearch, то однозначно Gdip_FastImageSearch для поиска картинки в цикле будет намного быстрее.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

9

Re: AHK: поиск картинки с IDXGIOutputDuplication + Gdip_FastImageSearch

Можно попробовать.
Но лучше найти кто разбирается в Си и может сравнить алгоритм этого кода с кодом imagesearch или  предложит какой-нибудь более шустрый алгоритм.

10

Re: AHK: поиск картинки с IDXGIOutputDuplication + Gdip_FastImageSearch

Malcev пишет:

найти кто разбирается в Си

Насколько я знаю далеко не все Си-шники знают ассемблер.
Так ты просто время не сравнивал?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

11 (изменено: Malcev, 2020-10-12 22:19:07)

Re: AHK: поиск картинки с IDXGIOutputDuplication + Gdip_FastImageSearch

serzh82saratov пишет:

Так ты просто время не сравнивал?

Время зависит от конкретных ситуаций.
Иногда находит быстрее imagesearch иногда Gdip_FastImageSearch.
Если использовать variation = 0, то вроде всегда быстрее работает, правда у меня не всегда находило.
Поставил по-дефалту 0.

serzh82saratov пишет:

Насколько я знаю далеко не все Си-шники знают ассемблер.

А зачем ассемблер? Код поиска на си написан.
https://github.com/MasterFocus/AutoHotk … geSearch.c
По идее алгоритм очень простой - в цикле сравниваются пиксели и всё.
Наверняка можно ускорить.

12 (изменено: Malcev, 2020-10-13 00:01:53)

Re: AHK: поиск картинки с IDXGIOutputDuplication + Gdip_FastImageSearch

Потестировал.
Так скорость быстрее в среднем на 25 процентов.
Но бывает, что при просмотре ютуба и в 2 раза.

13

Re: AHK: поиск картинки с IDXGIOutputDuplication + Gdip_FastImageSearch

Malcev пишет:

А зачем ассемблер? Код поиска на си написан.

В Gdip_FastImageSearch разве не ассемблерная вставка?

Malcev пишет:

По идее алгоритм очень простой

Если совсем простой, то и упрощать нечего, только идти на уровень ниже.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

14

Re: AHK: поиск картинки с IDXGIOutputDuplication + Gdip_FastImageSearch

serzh82saratov пишет:

В Gdip_FastImageSearch разве не ассемблерная вставка?

Нет.

serzh82saratov пишет:

Если совсем простой, то и упрощать нечего, только идти на уровень ниже.

Ну почему же. Есть различные алгоритмы.
Например Рабина — Карпа.
https://ru.wikipedia.org/wiki/%D0%90%D0 … 0%BF%D0%B0

15 (изменено: plank1433, 2020-10-13 02:46:49)

Re: AHK: поиск картинки с IDXGIOutputDuplication + Gdip_FastImageSearch

Malcev, этот скрипт - ищет точное совпадение картинки (пиксель в пиксель) или могут быть небольшие отличия (больше-меньше по размеру) ?

16

Re: AHK: поиск картинки с IDXGIOutputDuplication + Gdip_FastImageSearch

Пиксель в пиксель.

17

Re: AHK: поиск картинки с IDXGIOutputDuplication + Gdip_FastImageSearch

Malcev,  приложите файлы needle.bmp  и  needle.png
А то не понятно как тестировать.

18

Re: AHK: поиск картинки с IDXGIOutputDuplication + Gdip_FastImageSearch

Вы их должны создать сами.

19

Re: AHK: поиск картинки с IDXGIOutputDuplication + Gdip_FastImageSearch

Malcev пишет:
serzh82saratov пишет:

В Gdip_FastImageSearch разве не ассемблерная вставка?

Нет.

Я думал что такие вставки делают только на ассемблере. Я же правильно понимаю что эти данные могут состоять только из машинного кода? Тогда получается что в VS можно кусок кода Си превратить в машинный код?

Malcev пишет:

Есть различные алгоритмы.
Например Рабина — Карпа.

Мало что там понял, сравнивать не по одному пикселю, а по несколько за раз?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

20

Re: AHK: поиск картинки с IDXGIOutputDuplication + Gdip_FastImageSearch

serzh82saratov пишет:

Тогда получается что в VS можно кусок кода Си превратить в машинный код?

Вроде через эту утилиту можно:
https://www.autohotkey.com/boards/viewt … amp;t=4642

serzh82saratov пишет:

Мало что там понял, сравнивать не по одному пикселю, а по несколько за раз?

Я, если честно, не разбирался.
Надо бы посмотреть какой алгоритм у автохотки.

21

Re: AHK: поиск картинки с IDXGIOutputDuplication + Gdip_FastImageSearch

Malcev пишет:

Вроде через эту утилиту можно:

Круто, не знал что это может быть довольно просто.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

22

Re: AHK: поиск картинки с IDXGIOutputDuplication + Gdip_FastImageSearch

Malcev пишет:

Надо бы посмотреть какой алгоритм у автохотки.

Вроде такой же примерно.
https://github.com/Lexikos/AutoHotkey_L … .cpp#L4889

23

Re: AHK: поиск картинки с IDXGIOutputDuplication + Gdip_FastImageSearch

Malcev пишет:

Вы их должны создать сами.

Ну хотя бы ради примера что ли.
Чтобы понять, что сами-то создавать.

Написано
2) ищет needle.png с прозрачным белым цветом и вариацией 10.
3) ищет все совпадения needle.bmp.

Совпадения needle.bmp еще можно понять.
Точное совпадение некоего фрагмента - на экране монитора.
Но что значит needle.png с прозрачным белым цветом и вариацией 10 - это совершенно непонятно.
Вариацией чего ?
Что значит прозрачным белым цветом ?
Что может означать прозрачный белый цвет - на экране ?

24

Re: AHK: поиск картинки с IDXGIOutputDuplication + Gdip_FastImageSearch

plank1433 функция ищет картинку на экране, аналог ImageSearch в AHK.
Ну можно было погуглить что такое png формат, чем он отличается от Jpeg, bmp и т.д. Можно было не гуглить, а в Paint попробовать сохранить картинку с альфа каналом в формате png и в других форматах и посмотреть на разницу.

GD

25

Re: AHK: поиск картинки с IDXGIOutputDuplication + Gdip_FastImageSearch

Botsy пишет:

Ну можно было погуглить что такое png формат

Да знаю я что такое png формат, и что такое альфа-канал.

Я не понимаю - каким образом альфа-канал - оказался на рабочем столе.
Ну допустим разместили картинку с прозрачным фоном, ладно.
Изображения рабочего стола, на котором ведется поиск фрагмента - это PrintScreen.
PrintScreen - никакого альфа-канала не передает.
Так где осуществляет поиск этот скрипт, и что он конкретно ищет и что означает - искать на экране фрагмент с прозрачным фоном ?

(Автору наверное это все понятно. Но я все эти вопросы задаю, потому что не были приложены файлы картинок - для проверки этого скрипта и непонятен просто принцип его работы.)

26

Re: AHK: поиск картинки с IDXGIOutputDuplication + Gdip_FastImageSearch

Все точно так же как и у imagesearch.
Прозрачность картинок которые ищем подхватывается автоматом.
Так же можно сделать прозрачным любой цвет указав его 2-ым параметром в createNeedle("needle.png", 0xffffff)
Скрипт делает копию экрана и ищет в нем совпадения.

27

Re: AHK: поиск картинки с IDXGIOutputDuplication + Gdip_FastImageSearch

Ясно.
Видимо файлы - засекреченные, поэтому на примере продемонстрировать нельзя.

28

Re: AHK: поиск картинки с IDXGIOutputDuplication + Gdip_FastImageSearch

Ну например файл может быть таким:
http://lurkmore.so/images/d/d8/Rtfm.jpg

29

Re: AHK: поиск картинки с IDXGIOutputDuplication + Gdip_FastImageSearch

Malcev, то есть надпись RTFM - это и есть пнг с альфаканалом.

30

Re: AHK: поиск картинки с IDXGIOutputDuplication + Gdip_FastImageSearch

Да. И если эта картинка есть на экране, то скрипт ее должен найти.

31

Re: AHK: поиск картинки с IDXGIOutputDuplication + Gdip_FastImageSearch

Теперь все ясно.