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 ?
PixelSearchFile (^^)
-
- [ gelöst ]
-
nof@ker2 -
24. Oktober 2010 um 16:19 -
Geschlossen -
Erledigt
-
-
Welchen Zweck hat das, wenn du alle grünen Pixel eines Bildes hast?
-
Also , 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
-
Also ein Captcha umgehen...
-
Um alle Missverständnisse beiseite zu schaffen , ich will ein OCR programmieren (http://de.wikipedia.org/wiki/Texterkennung).
zum Thema : Ich will kein neues OCR schreiben. -
Hi,
mittels _GDIPlus_BitmapGetPixel() aus der GDIP.au3. -
Ok , danke schonmal.
Kennt jemand vielleicht schon ein OCR das man mit AutoIt "ansprechen" kann , wenn ja wie ? Oder gibt es schon UDFs ? -
- Offizieller Beitrag
Kennt jemand vielleicht schon ein OCR das man mit AutoIt "ansprechen" kann , wenn ja wie ? Oder gibt es schon UDFs ?
Vielleicht hilft dir das: OCR, Zeichenerkennung, Bild scannen, auslesen -
Danke BugFix genau soetwas hatte ich gesucht.
Aber ich hab mich jetzt auch an meinem eigenen OCR versucht , und habe schon mein erstes Problem :
_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)
[/autoit][autoit][/autoit][autoit][/autoit]
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
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
-
Die Func muss folgendermaßen lauten:
[autoit]
[/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