Pyautogui - szybsza pętla w pythonie

0

Hejka, ogarnąłem sobie skrypt wykrywający karty na ekranie i powiadamiający mnie o tym fakcie abym miał czas wykonać jakąś akcję.

Problem polega na tym że posiadam zbiór 150 zdjęć z kartami które chcę aby skrypt mnie informował. Mam to zrobione w pętli i niestety czas jaki potrzebuje program do sprawdzenia wszystkich fotek to około 36 sekund.
Czy jest jakiś sposób aby przyspieszyć wykonywanie pętli w pythonie?

Dodam że sam szukając pomysłów sam już przyspieszyłem z ponad minuty do 36 sekund używając opcji "confidence=0.8" oraz "grayscale=True" ale to wciąż jest za dużo. Obrazki mają po 5-6kb wagi więc bardzo malutko, wyciąłem ile się dało.

Trochę kodu z tej pętli:

   for szukanyobrazek5 in stolik1:
        try:
            szukanyobrazek51 = pyautogui.locateOnScreen(szukanyobrazek5, confidence=0.8)
            srodekobrazka5 = pyautogui.center(szukanyobrazek51)
            if (srodekobrazka5.x in range(270, 370)) and (srodekobrazka5.y in range(300, 340)):
                playsound('dzwieki/jestakcja.wav')
                time.sleep(10)
                break
            else:
                continue
        except:
            pass

Wyjaśnienie:
stolik1 posiada listę 150 obrazków które jeden po drugim szuka skrypt.
próbujemy znaleźć obrazek na ekranie, jeśli jest to środkujemy jego pozycję aby móc skorzystać z opcji "in range" aby skrypt nie szukał na całym ekranie tylko w określonym miejscu gdzie te karty mogą się pojawić.
jeśli znalazł któryś z obrazków to krzyczy w głośnikach "JEST AKCJA :)!" i robimy pauze na chwilę abym mógł wykonać odpowiednią akcję.
jeśli nie znalazł to kontynuujemy po to aby pętla wykonywała się dalej i bez końca dopóki znowu nie znajdzie jakiegoś obrazka

Pozdrawiam!

1

locateOnScreen po prostu zamula w tej bibliotece. Mozesz sprobowac to zrownoleglic odpalajac na kilku watkach ale nie wiem czy to cos da

0

Próbowałem tego sposobu i może troche pomaga ale laptop osiąga 80 albo i więcej stopni temperatury :D wolałbym nic nie spalić przy okazji działania tego czegoś ^^

0

Jesli Ci nie zamula foregroundu to to jakas roznica 30 czy 10 sekund?

2

Takie rzeczy na pikselach to najlepiej robic na opencv - zdecydowanie szybsze i dokladniejsze.

1

Ty używasz pyautogui do znalezienia fragmentów obrazków na innym obrazie, a nie do wykonywania jakiś akcji z użyciem myszki i klawiatury?
To musisz zmienić bibliotekę na opencv.

0

Widzę że muszę zacząć od nowa.. Dziękuję za odpowiedzi i wskazówki :-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1