Тема: AHK: поиск картинки с IDXGIOutputDuplication + Gdip_FastImageSearch
Тема для обсуждения "поиск картинки с IDXGIOutputDuplication + Gdip_FastImageSearch".
http://forum.script-coding.com/viewtopic.php?id=17670
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Серый форум → Общение → AutoHotkey → AHK: поиск картинки с IDXGIOutputDuplication + Gdip_FastImageSearch
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Тема для обсуждения "поиск картинки с IDXGIOutputDuplication + Gdip_FastImageSearch".
http://forum.script-coding.com/viewtopic.php?id=17670
Круто, а оно может находить все совпадения?
И пробовал png, не находит.
Сделал вроде как поудобнее и добавил поиск всех совпадений.
У меня png находит.
По идее скрипту всё-равно в каком формате картинка будет.
У меня первый пост выглядит теперь как троеточие.
Поправил.
Malcev, скажите пожалуйста, в чём его превосходство перед стандартным ImageSearch?
Скорость?
По идее да.
Надо тестировать на конкретных примерах.
Получение снимка экрана точно быстрее.
Ну и по-моему сам подход у меня логичней, так как я разделил скрипт на 3 части, первая - подготовка картинок для поиска, второе - получение экрана по современному апи, третье - сам поиск (вот тут могут быть косяки со скоростью).
Для самого поиска на входе ничего больше кроме scan+stride не надо, поэтому я убрал оттуда простыню лишних преобразований.
(вот тут могут быть косяки со скоростью).
Так а почему просто не сравнить однократный поиск большого изображения ImageSearch и всего твоего кода?
Malcev, скажите пожалуйста, в чём его превосходство перед стандартным ImageSearch?
Думаю даже если этот тест будет в пользу ImageSearch, то однозначно Gdip_FastImageSearch для поиска картинки в цикле будет намного быстрее.
Можно попробовать.
Но лучше найти кто разбирается в Си и может сравнить алгоритм этого кода с кодом imagesearch или предложит какой-нибудь более шустрый алгоритм.
найти кто разбирается в Си
Насколько я знаю далеко не все Си-шники знают ассемблер.
Так ты просто время не сравнивал?
Так ты просто время не сравнивал?
Время зависит от конкретных ситуаций.
Иногда находит быстрее imagesearch иногда Gdip_FastImageSearch.
Если использовать variation = 0, то вроде всегда быстрее работает, правда у меня не всегда находило.
Поставил по-дефалту 0.
Насколько я знаю далеко не все Си-шники знают ассемблер.
А зачем ассемблер? Код поиска на си написан.
https://github.com/MasterFocus/AutoHotk … geSearch.c
По идее алгоритм очень простой - в цикле сравниваются пиксели и всё.
Наверняка можно ускорить.
Потестировал.
Так скорость быстрее в среднем на 25 процентов.
Но бывает, что при просмотре ютуба и в 2 раза.
А зачем ассемблер? Код поиска на си написан.
В Gdip_FastImageSearch разве не ассемблерная вставка?
По идее алгоритм очень простой
Если совсем простой, то и упрощать нечего, только идти на уровень ниже.
В Gdip_FastImageSearch разве не ассемблерная вставка?
Нет.
Если совсем простой, то и упрощать нечего, только идти на уровень ниже.
Ну почему же. Есть различные алгоритмы.
Например Рабина — Карпа.
https://ru.wikipedia.org/wiki/%D0%90%D0 … 0%BF%D0%B0
Malcev, этот скрипт - ищет точное совпадение картинки (пиксель в пиксель) или могут быть небольшие отличия (больше-меньше по размеру) ?
Пиксель в пиксель.
Malcev, приложите файлы needle.bmp и needle.png
А то не понятно как тестировать.
Вы их должны создать сами.
serzh82saratov пишет:В Gdip_FastImageSearch разве не ассемблерная вставка?
Нет.
Я думал что такие вставки делают только на ассемблере. Я же правильно понимаю что эти данные могут состоять только из машинного кода? Тогда получается что в VS можно кусок кода Си превратить в машинный код?
Есть различные алгоритмы.
Например Рабина — Карпа.
Мало что там понял, сравнивать не по одному пикселю, а по несколько за раз?
Тогда получается что в VS можно кусок кода Си превратить в машинный код?
Вроде через эту утилиту можно:
https://www.autohotkey.com/boards/viewt … amp;t=4642
Мало что там понял, сравнивать не по одному пикселю, а по несколько за раз?
Я, если честно, не разбирался.
Надо бы посмотреть какой алгоритм у автохотки.
Вроде через эту утилиту можно:
Круто, не знал что это может быть довольно просто.
Надо бы посмотреть какой алгоритм у автохотки.
Вроде такой же примерно.
https://github.com/Lexikos/AutoHotkey_L … .cpp#L4889
Вы их должны создать сами.
Ну хотя бы ради примера что ли.
Чтобы понять, что сами-то создавать.
Написано
2) ищет needle.png с прозрачным белым цветом и вариацией 10.
3) ищет все совпадения needle.bmp.
Совпадения needle.bmp еще можно понять.
Точное совпадение некоего фрагмента - на экране монитора.
Но что значит needle.png с прозрачным белым цветом и вариацией 10 - это совершенно непонятно.
Вариацией чего ?
Что значит прозрачным белым цветом ?
Что может означать прозрачный белый цвет - на экране ?
plank1433 функция ищет картинку на экране, аналог ImageSearch в AHK.
Ну можно было погуглить что такое png формат, чем он отличается от Jpeg, bmp и т.д. Можно было не гуглить, а в Paint попробовать сохранить картинку с альфа каналом в формате png и в других форматах и посмотреть на разницу.
Ну можно было погуглить что такое png формат
Да знаю я что такое png формат, и что такое альфа-канал.
Я не понимаю - каким образом альфа-канал - оказался на рабочем столе.
Ну допустим разместили картинку с прозрачным фоном, ладно.
Изображения рабочего стола, на котором ведется поиск фрагмента - это PrintScreen.
PrintScreen - никакого альфа-канала не передает.
Так где осуществляет поиск этот скрипт, и что он конкретно ищет и что означает - искать на экране фрагмент с прозрачным фоном ?
(Автору наверное это все понятно. Но я все эти вопросы задаю, потому что не были приложены файлы картинок - для проверки этого скрипта и непонятен просто принцип его работы.)
Все точно так же как и у imagesearch.
Прозрачность картинок которые ищем подхватывается автоматом.
Так же можно сделать прозрачным любой цвет указав его 2-ым параметром в createNeedle("needle.png", 0xffffff)
Скрипт делает копию экрана и ищет в нем совпадения.
Ясно.
Видимо файлы - засекреченные, поэтому на примере продемонстрировать нельзя.
Ну например файл может быть таким:
Malcev, то есть надпись RTFM - это и есть пнг с альфаканалом.
Да. И если эта картинка есть на экране, то скрипт ее должен найти.
Теперь все ясно.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться