Seite 1 von 2
Bilder Vergleichen
Verfasst: 19.07.2005 12:58
von PaulchenPanter24
hi
ich suche in Code mit dem ich 2 Bilder vergleichen kann!
als erstes las ich von rechner per zufall ein bild anzeigen.
dannach soll er das bild mit allem gespeichertn bildern vergleich und
rausfinden welches bild angezeeigt wird!
erstens ist sowas möglich?
weitens wen ja wie?
mfg PAnter
Verfasst: 19.07.2005 14:12
von Batze
Ja, das ist möglich!
Du willst also vermutlich nicht 2 Bild-Dateien vergleichen, sondern konkret die Bilder (welche Genauigkeit).
Am besten du vergleichst die einfach Pixelweise, dann bist du abselut sicher.
Verfasst: 19.07.2005 14:23
von PaulchenPanter24
und wie geht sowas?
(EDIT: fehler ausgemerzt)
Verfasst: 19.07.2005 14:47
von Batze
Kommt ja schon, musste ich nur eben noch schreiben.
Code: Alles auswählen
If LoadImage(0, "bitmap1.bmp") = 0 : End : EndIf
If LoadImage(1, "bitmap2.bmp") = 0 : End : EndIf
Procedure SindBilderGleich(B1, B2, Fehlermaximum)
UseImage(B1)
W1 = ImageWidth()
H1 = ImageHeight()
UseImage(B2)
W2 = ImageWidth()
H2 = ImageHeight()
If H1 <> H2 Or W1 <> W2
ProcedureReturn 0
EndIf
For x=0 To W1-1
For y=0 To H1-1
UseImage(B1)
StartDrawing(ImageOutput())
Color = Point(x, y)
StopDrawing()
UseImage(B2)
StartDrawing(ImageOutput())
If Color <> Point(x,y)
Falsche + 1
EndIf
StopDrawing()
If Falsche > Fehlermaximum
ProcedureReturn 0
EndIf
Next
Next
Debug Falsche
ProcedureReturn 1
EndProcedure
Debug SindBilderGleich(0, 1, 10) ; Maximal zehn Fehler !
Es geht auch irgendwie schneller aber erst mal nur die Grundlage.
Edit: Da war noch ein Fehler!
Verfasst: 19.07.2005 14:53
von Leo
Geht auch einfacher:
Code: Alles auswählen
if MD5FileFingerprint("bitmap1.bmp") = MD5FileFingerprint("bitmap2.bmp")
debug "gleich"
else
debug "ungleich"
endif
Verfasst: 19.07.2005 14:57
von Batze
@Leo: Hast du meinen Beitrag auch gründlich gelesen?
Du willst also vermutlich nicht 2 Bild-Dateien vergleichen, sondern konkret die Bilder.
Es gibt ja auch png usw.

Also: Leo's ist total unsicher (aber natürlich viel schneller)

Verfasst: 19.07.2005 14:59
von Leo
Achso, sorry, hab ich nicht gelesen.
Trotzdem könnte man das schneller machen, indem man direkt aus dem Speicherbereich von der Grafikkarte liest. Ich versuch das mal jetzt

Verfasst: 19.07.2005 15:18
von PaulchenPanter24
ums besserzusagen ich hab ca 100 bmp dateien und will das er genau ein paar findet!
der vorschlag 2 dürfte da doch besser sein oder?
Verfasst: 19.07.2005 15:20
von Leo
Ja
Verfasst: 19.07.2005 15:27
von Deeem2031
Mit einer einfachen FileCompare-Procedure (z.B.
http://forums.purebasic.com/german/viewtopic.php?t=4005 ) wärs noch besser, da nicht erst der MD5-Code berechnet und die MD5-Strings dann verglichen werden müssen.