Поиск картинки на экране

Опубликуйте ваши работающие скрипты, библиотеки и ПО для AutoHotkey
SeaMan75
Posts: 1
Joined: 20 Dec 2020, 10:58

Поиск картинки на экране

Post by SeaMan75 » 20 Dec 2020, 11:21

Всем доброе время суток!

Имеет ли кто-нибудь положительный опыт поиска области экрана по картинке?
Дело вот в чем:
Есть библиотека Gdip standard library v1.45 by tic (Tariq Porter) 07/09/11

Есть вот такой код
1. Сама функция поиска, которая дергает библиотеку:

Code: Select all

imageSearch(byRef out1,byRef out2,x1,y1,x2,y2,image,vari=0,trans="",direction=5,debug=1){
    static ptok:= gdip_startup()
    imageB:=gdip_createBitmapFromFile(image)
    scrn:=gdip_bitmapfromscreen(x1 . "|" . y1 . "|" . x2 - x1 . "|" . y2 - y1)
    if(debug)
        gdip_saveBitmapToFile(scrn,a_now . ".png")
    errorlev:=gdip_imageSearch(scrn,imageB,tempxy,0,0,0,0,vari,trans,direction)
    gdip_disposeImage(scrn)
    gdip_disposeImage(imageB)

    if(errorlev){
        out:=strSplit(tempxy,"`,")
        out1:=out[1] + x1
        out2:=out[2] + y1
        return % errorlev
    }
    return 0
}
2. вызовы оной функции

Code: Select all

try = imageSearch(a1,a2, 0,0,3000,2000, "d:\any_png.png", 60)
MouseClick, Left, a1, a2
Нужные картинки находятся до поры до времени. Но стоит самую малость поменяться пикселям и картинка не будет найдена!
Оно и понятно: в шаблоне-то одна картинка, а на экране очень похожая, на глаз не различимая, но уже другая! Поэтому и не находит.

А кто-нибудь в курсе - способна ли данная библиотека искать не точное совпадение, а некое похожее? И как это можно организовать?
Заранее спасибо!
User avatar
MostWanted
Posts: 9
Joined: 03 Jan 2021, 07:46

Re: Поиск картинки на экране

Post by MostWanted » 22 Feb 2021, 05:13

Добрый день. Советую копать в сторону библиотеки FindText - https://www.autohotkey.com/boards/viewtopic.php?t=17834
7-я и 8-я (последняя на сегодня) версия позволяет считывать картинку, без необходимости размещения картинки где-либо, кроме кода.
Плюс можно убрать зависимость от цвета. То есть картинку можно закодировать в коде в черно-белом цвете и тогда не будет проблем.
С другой стороны, конечно, если картинка будет изменена в размере, я полагаю, что скрипт работать не будет.

По поводу динамического поиска, я бы советовал думать в множественном уменьшении/увеличении, как когда мы кодируем скажем иконки для сайтов, имея несколько вариантов иконок (16*16, 32*32 и так далее).
Post Reply

Return to “Скрипты и библиотеки”