Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Wyszukiwanie obrazu - w jaki sposób?


Rekomendowane odpowiedzi

Opublikowano

Wie ktoś może jak zrobić szukanie obrazu? Najlepiej żeby było tam gdzie jest słowo TUTAJ. Chodzi mi dokładnie że gdy pojawi się dany obraz skrypt wykonuje dane sekwencję.

 

Func Tabela1()
 
TUTAJ
 
MouseClick ( "left", 2138, 149)
$iColor = PixelGetColor(747, 661)
If $iColor = $iBlack And $iIC <> $iBlack Then
     $iIC = $iBlack
     Sleep (1000)
     IsBlack()
EndIf
If $iColor = $iGreen And $iIC <> $iGreen Then
     $iIC = $iGreen
     Sleep (1000)
     IsGreen()
EndIf
If $iColor = $iRed And $iIC <> $iRed Then
     $iIC = $iRed
     Sleep (1000)
     IsRed()
EndIf
EndFunc
Opublikowano

Pisałem już o tym kiedyś, ale jeszcze raz powtórzę.

 

Jest to proste. Ale w AutoIt nie ma funkcji do szukania obrazków. Musisz użyć zewnętrznego UDF'a o nazwie "ImageSearch.au3". Musisz znaleść w sieci (co nie jest trudne), ale UDF ten powinien zawierać biblioteką DLL o nazwie "ImageSearchDLL.dll" i wielkości 94 208 bajtów. Są też DLL o innej wielkości, ale te które wypróbowałem zawierały błędy i skrypt się wywala.

UDF ten jest bardzo prosty, gdyż zawiera tylko 4 funkcje. Najlepiej umieść go w folderze skryptu (oczywiście razem z wzmiankowaną biblioteką DLL).

Poniżej zamieszczam opis mojego autorstwa:

 

ImageSearch.au3 (v.3.0)

 

 

_ImageSearch ($sFindImage, $iResultPosition, ByRef $iX, ByRef $iY, $iTolerance)

 

_ImageSearchArea ($sFindImage, $iResultPosition, $iLeft, $iUp, $iRight, $iBottom, ByRef $iX, ByRef $iY, $iTolerance)

 

_WaitForImageSearch ($sFindImage, $iWaitSecs, $iResultPosition, ByRef $iX, ByRef $iY, $iTolerance)

 

_WaitForImagesSearch($aFindImage, $iWaitSecs, $iResultPosition, ByRef $iX, ByRef $iY, $iTolerance)

 

Funkcje poszukują na ekranie obrazka wg pliku obrazka wzorcowego. Zwraca True gdy sukces, lub False gdy obrazka nie znaleziono.
Ponadto jeżeli obrazek został znaleziony, przez referencję w zmiennych $iX i $iY zostają wstawione jego współrzędne na ekranie.

 

Różnica między funkcjami _ImageSearch jest taka, że:

_ImageSearch – przeszukuje cały obszar ekranu

_ImageSearchArea – przeszukuje zadeklarowany prostokątny obszar ekranu.

Obie funkcje szukają obrazka jeden raz.

 

_WaitForImageSearch – poszukuje obrazka wielokrotnie w zadanym czasie (na całym ekranie)

_WaitForImagesSearch – poszukuje wielu obrazków wielokrotnie w zadanym czasie (na całym ekranie),

                                   nazwy wzorców szukanych obrazków należy umieścić w tablicy $aFindImage poczynając
                                   od indeksu 1, w komórce o indeksie 0 należy podać ilość obrazków do znalezienia.

 

Opis parametrów przekazywanych do funkcji:

$sFindImage – nazwa pliku z wzorcem poszukiwanego obrazka

$aFindImage – tablica z nazwami plików z wzorcami poszukiwanych obrazków

$iResultPosition – 0 oznacza, że będą zwrócone współrzędne lewego górnego narożnika znalezionego obrazka,

                         1 oznacza, że będą zwrócone współrzędne środka znalezionego obrazka

$iLeft, $iUp – współrzędne lewego górnego narożnika przeszukiwanego obszaru

$iRight, $iBottom – współrzędne prawego dolnego narożnika przeszukiwanego obszaru

$iX, $iY – w tych zmiennych znajdą się współrzędne znalezionego obrazka

$iTolerance – współczynnik tolerancji na różnicę kolorów wzorca i szukanego obrazka,
                    może przyjmować wartość od 0 do 255, 0 – brak tolerancji (kolory obrazka i wzorca muszą być identyczne),
                    255 – największa tolerancja

$iWaitSecs – czas w sekundach przez jaki ma być poszukiwany obrazek/obrazki.

 

UWAGA:

1. Wzorzec może być w formacie PNG, JPG, BMP, GIF.

2. Wzorzec i obrazek nie mogą być względem siebie skalowane, tzn. muszą mieć tyle samo pikseli w poziomie i pionie.

 

 

Przykład:

#include <ImageSearch.au3>

 

Dim $iX1, $iY1

$fResult = _ImageSearch("pic.bmp", 1, $iX1, $iY1, 0)

 

if $fResult Then

   MouseMove ($iX1, $iY1, 3)

   MsgBox(64, "HURA!", "Znaleziono obrazek.")

Else

   MsgBox(64, "Uuuu", "Nie znaleziono obrazka.")

EndIf

Opublikowano

Jest pewien problem, gdy odpalam skrypt to mi otwiera notatnik i robi screena tylko okna notatnika i jest na pulpicie nazwany 24bit. Dlaczego takie coś występuje? Nie wiem od czego to zależy.

Opublikowano

Może być coś w tym stylu:

#include <ImageSearch.au3>

HotKeySet("{ESC}", "end") ;rejestracja funkcji kończącej skrypt

Global $sPicture = "pic.bmp" ;plik z obrazkiem wzorcowym, wstawić swoje dane
Global $iIC = -1

Tabela1()


;główna funkcja skryptu
Func Tabela1()
   SearchImage($sPicture)
   MouseClick ( "left", 2138, 149)
   $iColor = PixelGetColor(747, 661)
   If $iColor = $iBlack And $iIC <> $iBlack Then
     $iIC = $iBlack
     Sleep (1000)
     IsBlack()
   EndIf
   If $iColor = $iGreen And $iIC <> $iGreen Then
     $iIC = $iGreen
     Sleep (1000)
     IsGreen()
   EndIf
   If $iColor = $iRed And $iIC <> $iRed Then
     $iIC = $iRed
     Sleep (1000)
     IsRed()
   EndIf
EndFunc

;funkcja szukająca obrazka
Func SearchImage($sPicture)
   Local $iX1, $iY1
   Do
   Until _ImageSearch($sPicture, 1, $iX1, $iY1, 0)
EndFunc

;funkcja kończąca skrypt po wciśnięciu ESC
Func end()
   Exit
EndFunc

Func IsBlack()
	;tu treść funkcji
EndFunc

Func IsGreen()
	;tu treść funkcji
EndFunc

Func IsRed()
	;tu treść funkcji
EndFunc
Opublikowano

Wydaje mi się że nie, ale nie jestem tego pewien.

Nie gram w gry przeglądarkowe, więc musisz to sprawdzić sam.

Opublikowano

Wasta mam pytanie czy ImageSearch sprawdzi się w grze przegladarkowej flash?, chodzi mi czy rozpozna w takiej formie obrazek

Tak, image search jest jakby stworzony dla flasha, używam tej funkcji w tym zastosowaniu już dość długo, zwracam uwagę na przywary flasha tj zamulanie  przeglądarek (aby z tym zawalczyć zrobiłem funkcję okresowego restartu przeglądarki ) bo IS potrafi zacząć się "gubić", pamiętaj o tym że funkcja nie skaluje obrazków, tj muszą być one robione pod określoną rozdzielczość ekranu. Njalepszą przeglądarkę (najszybszą) z flashem jaka znalazłem jest oparty na Chromium Slimjet, który Ci polecam, posiada wbudowany flash i przydatny AdBlocker, również podchodzą wtyczki od Chroma

Jest wiele wersji Image Search, również zaliczyłem problemy na 64 bitach, zacznij najlepiej od 32, nieco OT ale gdzie sie da stosuję wyszukiwanie pikselami świetną biblioteką FastFind, Wasta, znasz? Aktualnie walcze z OCRem

Dziś wynalazłem taki patent jak poniżej i tez fajnie działa, pamiętajcie o nieskalowaniu w stosunku do wzorca, oraz zapisywanie jako bitmapa bmp czy png, gdyż jpg  poważnie zniekształcają obraz co może prowadzić do braku wyszukiwania

https://www.autoitscript.com/forum/topic/182543-a-new-image-search-solution/?_fromLogin=1#_=_

 

 

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...