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

chaos81Betreff: Bilder vergleichen !?überlappen ?! Lösung ? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() 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() ![]() ![]() ![]() 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 ![]() |
||
![]() |
Smily |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group