Bilder vergleichen !?überlappen ?! Lösung ?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

chaos81

Betreff: Bilder vergleichen !?überlappen ?! Lösung ?

BeitragMo, Apr 09, 2007 3:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

habe mal wieder ein neues Problem....

ich würde gerne 2 kleine schwarzweißbilder vergleichen und prüfen ob es die selben sind... sind nur striche.. gibts sowas wie ne "überlappungs"-funktion !?


mfg

Christoph

BeitragMo, Apr 09, 2007 4:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
ich würde gerne 2 kleine schwarzweißbilder vergleichen und prüfen ob es die selben sind... sind nur striche.. gibts sowas wie ne "überlappungs"-funktion !?


Es gibt eine Überlappungsfunktion" (ql:imagesoverlap), die macht aber nicht das, was du willst (insofern ich deine Frage richtig verstanden habe).

Wenn du schauen willst, ob zwei unterschiedliche Bilder genau gleich aussehen, musst du jeden einzelnen Bildpunkt auslesen und ihn mit dem entsprechenden Punkt des anderen Bildes vergleichen:

1. Du überprüfst, ob die Bilder gleich groß sind, wenn nicht, können sich ja schonmal nicht gleich aussehen (ql:imagewidth, ql:imageheight)
2. Du machst zwei ql:For-Schleifen.
Code: [AUSKLAPPEN]
For x=0 to imagewidth(bild1)
for y=0 to imageheight(bild1)
;hindrin vergleichen
next
next

3. Innerhalb dieser Forschleifen musst du vergleichen. Du liest mit ql:getcolor, ql:readpixel oder ql:readpixelfast die Farbe des Pixels auf dem ersten Bild und dann die Farbe des Pixels auf dem zweiten Bild aus.
4. Ist die Farbe gleich, muss weitergeforscht werden
5. Ist die Farbe anders ist sicher, dass das Bild anders aussieht
 

chaos81

BeitragDi, Apr 10, 2007 2:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke
ich bastel mir da gerade ne simple Pixel Erkennung .
momentan alles bisschen spielerrei um erstmal die Befehle zu kapieren.

Ich suche nach dem ersten schwarzen Pixel (bild mit Weiß und schwarz) von dort aus den letzten schwarzen auf einer x Aachse.

Dies ergibt 2 Punkte die bei dem selben (einfachen) bild immer gleich sind.
Zur Erhöhung der Treffsicherheit könnte man mehr punkte bestimmen.

das ganze werde ich dann entweder im bild zu bild vergleich anwenden oder die punkte in einer Satenbank mit verweis auf das passende bild (sollte die Erkennungsrate drastisch steigern)....
eine art Steinzeit ocr in B3D Smile

zu soweit meine vorstellung und träume bis jetzt habe ich das :

Code: [AUSKLAPPEN]
;Pixelvergleich VXXXX

global pic$,newpic$                                                             
pic$   =   "C:\blitztest.bmp"      ;Bild sollte 220x60 sein.
;Fenstererstellen und Bild anzeigen
                Graphics 220,120,0,2
               setbuffer Backbuffer()
codpic =  loadimage(pic$)
               drawimage codpic,0,0
;farbe ändern und slice anzeigen (to.do :prüfen bis wohin das pixel geht und prüfen ob x weiter noch eins ist
               Color 255,0,0
;               rect 56,0,1,60
;               rect 107,0,1,60
;               rect 154,0,1,60
;               rect 208,0,1,60
;1.auf dSchwarzes Pixelauf der X-achse a finden
xy = 0
            repeat
               LOCKBUFFER Backbuffer()
rgb=         READPIXELFAST(xy,3)
xy = xy + 1
r=(rgb AND $FF0000)/$10000
g=(rgb AND $FF00)/$100
b=rgb AND $FF
               UNLOCKBUFFER BackBUFFER()
tx$= r+" "+g+" "+b
if xy = 60 then
Print "Kein Pixel"
waitkey()
end

endif
until r = 0    ;geht bestimmt auch ohne umwandeln...to.do
print xy            ;XY hat position des schwarzen pixels !   nicht als variable .. to.do         
; letztes Pixel finden.dazu solange ab xy suchen bis ein weißes Pixel gefunden wird
            repeat
               LOCKBUFFER Backbuffer()
xy = xy + 1
rgb=         READPIXELFAST(xy,3)
r=(rgb AND $FF0000)/$10000
g=(rgb AND $FF00)/$100
b=rgb AND $FF
               UNLOCKBUFFER BackBUFFER()
tx$= r+" "+g+" "+b
if xy = 60 then
Print "Kein Pixel"
waitkey()
end

endif
until r = 255
print xy   ;position des letzten schwarzen pixels
waitkey()



Embarassed Embarassed Rolling Eyes

Mal sehn vieleicht hat ja jemand paar tips und befehls fetzen für mich....


mfg

p.s. sauiger quellcode nicht schimpfen ich weiß es noch nicht besser Crying or Very sad

Smily

BeitragDi, Apr 10, 2007 10:35
Antworten mit Zitat
Benutzer-Profile anzeigen
mach ma lockbuffer und unlockbuffer ausserhalb der Schleife. Sonst frisst das eine ganze menge speed
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org
 

chaos81

BeitragDi, Apr 10, 2007 15:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Smily0412 hat Folgendes geschrieben:
mach ma lockbuffer und unlockbuffer ausserhalb der Schleife. Sonst frisst das eine ganze menge speed


thx.habs mal abgeändert.

ich suche noch beispiele wo einem simpl die ganze array und field geschichte erklärt wird. werd jetzt mal auf robsite stöbern aber vieleicht gibt es ja noch was !?


mfg

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group