PixelSearch иногда не находит цвета, найденные PixelGetColor - PullRequest
0 голосов
/ 04 июня 2018

Я пытался создать скрипт, который выполнял бы действие при обнаружении цвета, но у меня возникли проблемы с PixelSearch.

Я использую PixelSearch, а не соответствие с PixelGetColor, так как цвет прозрачный и поэтому требует PixelSearchФункция вариации.

После проблем с отсутствием цвета, который определенно был там, я попытался создать скрипт для поиска цвета с помощью PixelGetColor, затем передать его в PixelSearch и найти его с 0 вариациями.

Это гарантирует, что цвет был на самом деле, скрипт работал большую часть времени, но часто отвечал ErrorLevel 1 (не найден, что должно быть невозможно).

Я работал как на неактивных, так и на активных окнах, но иногда терпел неудачуна обоих.

Сценарий, размещенный ниже, может кто-нибудь объяснить, почему может возникнуть эта проблема. Все тестовые цвета были статическими и не меняли изображения без прозрачности.

Почему возникает эта ошибка и ее можно исправить?

CoordMode, Pixel,Screen
CoordMode,Mouse,Screen

*$PGDN::
    MouseGetPos, PosX, PosY
    PixelGetColor, cRGB , %PosX%, %PosY%,RGB
    PixelGetColor, cBGR , %PosX%, %PosY%
    PixelSearch,Colour_SearchX,Colour_SearchY,PosX+10,PosY+10,PosX-10,PosY-10,cRGB,RGB Fast
    If ErrorLevel = 0
    {
        Search_Result:= "Found"
    }
    Else
    {
        Search_Result:= "Not Found"
    }
    MsgBox,% PosX ", " PosY "`nRGB: (" cRGB " ) - BGR: (" cBGR ")"  "`n" Search_Result ":" cRGB " at: " Colour_SearchX "," Colour_SearchY
Return

1 Ответ

0 голосов
/ 05 июня 2018

Этот код работает с внесенными мною изменениями

PixelSearch,Colour_SearchX,Colour_SearchY,PosX-10,PosY-10,PosX+10,PosY+10,cRGB,RGB Fast

Это связано с тем, что номера области поиска неверны (значения X1, Y1 больше, чем X2, Y2)

CoordMode,Pixel,Screen
CoordMode,Mouse,Screen

*$PGDN::
    MouseGetPos, PosX, PosY
    PixelGetColor, cRGB , %PosX%, %PosY%,RGB
    PixelGetColor, cBGR , %PosX%, %PosY%
    PixelSearch,Colour_SearchX,Colour_SearchY,PosX-1,PosY-1,PosX+1,PosY+1,cRGB,50,RGB Fast

    If ErrorLevel = 0
    {
        Search_Result:= "Found"
    }
    Else
    {
        Search_Result:= "Not Found"
    }
    MsgBox,% PosX ", " PosY "`nRGB: (" cRGB " ) - BGR: (" cBGR ")"  "`n" Search_Result ":" cRGB " at: " Colour_SearchX "," Colour_SearchY
Return
...