Bilderkennung

  • Hallo,
    ich habe AutoIt vor einem Jahr kennen und lieben gelernt. Ich programmiere beruflich Java und hab das früher auch für so kleine Automatisierungssachen genutzt. Seit ich AutoIt kenne, sind solche Sachen mit wenig Zeilen in Null Komma nix gelöst. Doch jetzt habe ich das Gefühl, dass ich an seine Grenzen gestoßen bin. Thema Bilderkennung. Grundsätzlich wäre mein Vorgehen in Java über SWT einen Screenshot vom Fenster zu machen, dauert ca 150ms und dann die Pixel in einer Art Raster durchgehen, je nah dem, wie groß das gesuchte Objekt ist. In Autoit habt Ihr eine schicke Methode Pixelsearch eingebaut, die das alles erledigt. Leider habe ich keine Möglichkeit gefunden, nach einem Fund weiter zu suchen. Hier ein kurzes Stück PseudoCode:

    Code
    array=PixelSearch(....., grün)
    while isArray(array) 
    if getpixel(array[0]+5, array[1]) = rot then
    tue was
    break
    else
    array=pixelSearch.continue()
    endif
    wend

    Gibt es da eine Möglichkeit?

    Was mich noch interessiert ist ob ich bei der PixelSearch irgendeine Möglichkeit habe die Größe des zu suchenden Farbflecks anzugeben. In Verbindung mit der Farbabweichung wäre das eine mächtige Suchmethode.

    Falls AutoIt das von Haus aus nicht unterstützt, gibt es für autoit fertige zusatz API's, sozusagen als Plugin?

    Vielen Dank,
    Staenker

  • also ich würde das genau so versuchen wie du geschrieben hast, Bild in GUI laden, und mit pxl search das bild absuchen... wie effizient diese methode ist weiss ich nicht aber farbabweichung hat die Funktion doch... wenn ich mich recht erinnere shade variation ;)

    und dann meine idee wäre: (langsam wegen arrayredim)

    Spoiler anzeigen
    [autoit]

    Dim $found[1][2]
    $raster = 5
    $farbe =
    For $i = 0 To $hoehe Step $raster
    For $x = 0 To $breite Step $raster
    $pxl = PixelSearch($i, $x, $i+$raster, $i+$raster, $farbe)
    If Not @error Then
    Redim $found[Ubound($found)+1][2]
    $found[$i][0] = $pxl[0]
    $found[$i][1] = $pxl[1]
    EndIf
    Next
    Next

    [/autoit]

    Ui ich hoffe das gfeht so einigermaßen war jetzt völlig ausm kopf raus gecoded, und dazu noch ohne es testen zu können :/

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D