PixelSearchFile (^^)

  • Ich habe mal wieder ein Problem , ich will in einem lokal gespeicherten Bild nach allen grünen (0x00FF00) Pixel suchen.
    Hat jemand eine Idee wie man das umsetzten könnte ?

    Einmal editiert, zuletzt von nof@ker2 (25. Oktober 2010 um 20:34)

  • Also :D , das Bild ist ein Buchstabe (der grün ist) und jenachdem wie die Struktur der grünen Pixel ist will ich zwischen verschieden Buchstaben / Zahlen unterscheiden , ich hoffe zu verstehst mich ^^:whistling:

  • Ok , danke schonmal.
    Kennt jemand vielleicht schon ein OCR das man mit AutoIt "ansprechen" kann , wenn ja wie ? Oder gibt es schon UDFs ?

  • Danke BugFix genau soetwas hatte ich gesucht. ;)
    Aber ich hab mich jetzt auch an meinem eigenen OCR versucht ^^ , und habe schon mein erstes Problem :cursing: :
    _GDIPlus_BitmapGetPixel liefert mir solche Werte :

    Spoiler anzeigen

    4278190080
    4294967295
    4294967295
    4294967295
    4294967295
    4278190080
    4294967295
    2995226038
    4294967295
    4294967295
    4294967295
    4294967295
    4294967295
    4294967295
    4278190080
    2995226038
    4278190080
    4294967295
    4294967295
    4294967295
    4294967295
    4278190080
    4294967295
    2995226038
    4294967295
    4278190080
    4278190080
    4278190080
    4278190080
    4294967295
    4294967295
    2995226038
    2995226038
    2995226038
    2995226038
    2995226038
    2995226038
    2995226038
    2995226038
    2995226038


    nur kann ich mit diesen leider nichts anfangen ..
    es wäre nett wenn mir jemand auf die Sprünge helfen könnte.

    :):)

  • [autoit]

    Func _GDIPlus_GetPixel($hBitmap,$X,$Y)
    Local $result = DllCall($ghGDIPDLL, "int", "GdipBitmapGetPixel", "ptr", $hBitmap, "int", $X, "int", $Y, "dword*", 0)
    If @error Then Return SetError(1,0,0)
    return "0x"&Hex($result)
    EndFunc

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


    so!

  • Hi,
    das liegt daran, dass es sich hier um Integer-Werte handelt...Mittels Hex() wandelst du diese in das Hexadezimalsystem um und kannst den Werten leichter Informationen abbnehmen:
    Dabei ist das Farbformat folgendermaßen aufgebaut:
    0xAARRGGBB, nur falls Alphawerte unterstützt werden, ansonsten sieht das Format so aus: 0xRRGGBB.
    AA = der Alphaanteil (Transparenz). FF bedeutet vollkommen sichtbar, 00 unsichtbar.
    RR = Rotanteil
    GG = Grünanteil
    BB = Blauanteil
    Sprich die Farbe 0x00FF0000 ist ein unsichtbares Rot,
    die Farbe 0xFFFF0000 ist ein sichtbares Rot,
    die Farbe 0xFF00FF00 ist ein sichtbares Grün,
    die Farbe 0xFF0000FF ist ein sichtbares Blau, usw.
    LG,
    Ealendil

    #Edit: paar Minuten zu spät.

  • Edit : Es funktioniert , danke an alle die sich beteiligt haben ;)

    Einmal editiert, zuletzt von nof@ker2 (25. Oktober 2010 um 20:34)

  • Die Func muss folgendermaßen lauten:

    [autoit]


    Func _GDIPlus_GetPixel($hBitmap,$X,$Y)
    Local $aResult = DllCall($ghGDIPDLL, "int", "GdipBitmapGetPixel", "ptr", $hBitmap, "int", $X, "int", $Y, "dword*", 0)
    If @error Then Return SetError(1,0,0)
    return "0x"& Hex($aResult[0])
    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von Ealendil (25. Oktober 2010 um 20:52)