Bilder vergleich

  • Hallo,

    ich habe mir 100 mögliche "Zahlen"-Bilder in einen Ordner gespeichert und möchte nun per Screen_Capture einen gewissen Bereich des Bildschirm damit vergleichen.
    Das Ergebnis soll dann der Dateiname sein. Die Koordinaten die verglichen werden müssen lauten 979, 315, 1018, 339

    Sollte mit ImgSearchArea funktionieren, aber ich bekomme es nicht zum laufen... kann mir jemand einen funktionierenden Code für das vorgehen geben!?

    Danke schonmal für eure Mühen

    Beispielbil

  • Mal so auf die Schnelle getippt... Nicht getestet.

    Spoiler anzeigen
    [autoit]

    #include <ImageSearch.au3>
    #include <File.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global Const $s_Path = @ScriptDir & '\Images' ; Pfad zu dem Ordner mit den 100 Grafiken. Ohne Backslash!
    Global Const $a_Img = _FileListToArray($s_Path, '', 1)
    Global $i_X, $i_Y, $f = False

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To $a_Img[0]
    If _ImageSearchArea($s_Path & '\' & $a_Img[$i], 1, 979, 315, 1018, 339, $i_X, $i_Y, 30) Then
    MsgBox(64, 'Die Grafik wurde gefunden', $s_Path & '\' & $a_Img[$i])
    $f = True
    ExitLoop
    EndIf
    Next
    If Not $f Then MsgBox(16, '', 'Es wurde keine Grafik gefunden.')

    [/autoit]
  • Erstmal vielen Dank,

    ich erhalte die Fehlermeldung

    Zitat

    Subscript used with non-Array variable.:
    For $i = 1 To $a_Img[0]
    For $i = 1 To $a_Img^ ERROR

    Pfad hab ich entsprechend geändert, daran sollte es eigentl. nicht liegen... noch eine Idee wieso er meckert? :)

  • $a_Img ist kein Array weil in der Zeile

    [autoit]

    Global Const $a_Img = _FileListToArray($s_Path, '', 1)

    [/autoit]


    Ein * fehlt ;) sonst findet er keine Dateien
    So:

    [autoit]

    Global Const $a_Img = _FileListToArray($s_Path, '*', 1)

    [/autoit]


    //Edit: Zu Langsam .... ^^

    Um Missverständnisse zu vermeiden, mein Name rührt vom Sternenbild und nicht vom Shop her :D


    Rainbow Dash :rock:

    "Das, wobei unsere Berechnungen versagen, nennen wir Zufall." (Albert Einstein)

  • Vielen Dank für eure Hilfe...

    musste nun zwar alle Bilder neu machen (hat iwie nicht geklappt) aber der Code geht :) !!!

    Danke

  • Eine Frage hätte ich da dann doch noch, weil mir jetzt beim Ausprobieren des Codes noch aufgefallen ist, dass er in einer Schleife mir immer wieder den selben Preis findet...
    dh. in der Func _Angebotsabgabe arbeitet er mir ja die einzelnen Gegenstände ab... wenn ich nun im Gegenstand 1 zb. einen Euro 14 Cent 15 gefunden hatte, er mir das korrekt für diesen Gegenstand eingetragen hat und er zum Gegenstand 2 geht, nimmt er wieder die 14 Euro 15cent. Manchmal erkennt er mir das auch richtig, aber meist bleibt es dabei, als ob der Code a)zu schnell oder b)ich die 14 euro 15cent iwie kompl. ziurücksetzen muss
    aber wie gesagt, iwann erkennt er auch mal wieder richtig :)

    [autoit]


    Global $BestellCentpreis, $BestellEuroPreis

    [/autoit][autoit][/autoit][autoit]

    $Bestellmenge = "4"

    [/autoit][autoit][/autoit][autoit]

    Func _EuroPreisSuchen()
    For $i = 1 To $a_Img1[0]
    If _ImageSearchArea($s_Path1 & '\' & $a_Img1[$i], 1, 945, 315, 982, 339, $i_X, $i_Y, 30) Then
    $f = True
    $BestellEuroPreis = Abs($a_Img1[$i])
    _CentPreisSuchen()
    EndIf
    Next
    ;If Not $f Then MsgBox(16, '', 'Es wurde keine Grafik gefunden.')
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    Func _CentPreisSuchen()
    For $i = 1 To $a_Img2[0]
    If _ImageSearchArea($s_Path2 & '\' & $a_Img2[$i], 1, 979, 315, 1020, 339, $i_X, $i_Y, 30) Then
    $f = True
    $BestellCentPreis = Abs($a_Img2[$i]+1)
    ExitLoop
    EndIf
    Next
    ;If Not $f Then MsgBox(16, '', 'Es wurde keine Grafik gefunden.')
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    Func _Angebotsabgabe()
    While $iCounter <=11
    MouseClick("left", 412, 224, 1, Sleep(500)) ;Gegenstand1
    _Preiseingabe()
    MouseClick("left", 412, 272, 1, Sleep(500)) ;Gegenstand2
    _Preiseingabe()
    MouseClick("left", 412, 322, 1, Sleep(500)) ;Gegenstand3
    _Preiseingabe()
    MouseClick("left", 412, 368, 1, Sleep(500)) ;Gegenstand4
    _Preiseingabe()
    MouseClick("left", 412, 416, 1, Sleep(500)) ;Gegenstand5
    _Preiseingabe()
    MouseClick("left", 412, 462, 1, Sleep(500)) ;Gegenstand6
    _Preiseingabe()
    MouseClick("left", 412, 512, 1, Sleep(500)) ;Gegenstand7
    _Preiseingabe()
    MouseClick("left", 412, 562, 1, Sleep(500)) ;Gegenstand8
    _Preiseingabe()
    MouseClick("left", 412, 610, 1, Sleep(500)) ;Gegenstand9
    _Preiseingabe()
    MouseClick("left", 412, 656, 1, Sleep(500)) ;Gegenstand10
    _Preiseingabe()
    MouseClick("left", 1162, 695, 1) ;Weiter
    Sleep(500);
    $iCounter += 1
    WEnd
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    Func _Preiseingabe()
    MouseClick("left", 582, 347, 1, Sleep(500));"Eigenes Gebot abgeben"
    Sleep(1500)
    _EuroPreisSuchen()
    Sleep(5000)
    MouseClick("left", 561, 274, 2, Sleep(800));Mengenbedarf
    Sleep(500)
    Send($Bestellmenge)
    Sleep(500)
    MouseClick("left", 492, 341, 2, Sleep(500)) ;Preis Euro
    Send($BestellEuroPreis)
    Sleep(500)
    MouseClick("left", 558, 342, 2, Sleep(500)) ;Preis Cent
    Send($BestellCentPreis)
    MouseClick("left", 496, 417, 1, Sleep(500)) ;Bestellung aufgeben
    MouseClick("left", 519, 702, 1, Sleep(500)) ;Zurück zu den Suchergebnissen
    EndFunc

    [/autoit][autoit][/autoit][autoit][/autoit]