Portal > Foren > Java > Desktop-Applikationen und Grafik > BufferedImage vergleichen
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 28.12.2005, 22:59 Nach oben    #1
Oliver O.
 
Benutzerbild von Xean
 
Registriert seit: 17.08.2005
Beiträge: 427
Standard BufferedImage vergleichen

Also, ich möchte zwei BufferedImages vergleichen...
mit BufferedImages1 == BufferedImages2 geht es nicht..

Die Bilder habe ich durch java.awt.Robot.createScreenCapture(Rectangle);
Xean ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 28.12.2005, 23:14 Nach oben    #2
Erfahrener Benutzer
 
Benutzerbild von karahead
 
Registriert seit: 23.11.2005
Ort: Stadtallendorf
Beiträge: 139
Standard

Wie wär's mit
buffImage1.equals(buffImage2);

equals(Object o); sollte eigentlich bei jeder Klasse verfügbar sein.
__________________
Die Menschen wünschen sich Unsterblichkeit, aber wissen nichts anzufangen an einem verregneten Sonntag Nachmittag.
karahead ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 28.12.2005, 23:15 Nach oben    #3
Erfahrener Benutzer
 
Benutzerbild von karahead
 
Registriert seit: 23.11.2005
Ort: Stadtallendorf
Beiträge: 139
Standard

Mit == kannst du nur generische Typen (außer String, dass ja ein Objekt ist) vergleichen.
Z.B.
1==1
1.0 == 1.0
true == true
u.s.w.
__________________
Die Menschen wünschen sich Unsterblichkeit, aber wissen nichts anzufangen an einem verregneten Sonntag Nachmittag.
karahead ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 29.12.2005, 15:43 Nach oben    #4
Oliver O.
 
Benutzerbild von Xean
 
Registriert seit: 17.08.2005
Beiträge: 427
Standard

nee, bei equals() kommt trotzdem false zurück...

Code:
  public void paint(Graphics g){
	Rectangle rect = new Rectangle(50,50,100,100);
	BufferedImage b1 = r.createScreenCapture(rect);
	BufferedImage b2 = r.createScreenCapture(rect);
	System.out.println(b1.equals(b2));
	g.drawImage(b1,50,50,this);
	g.drawImage(b2,150,50,this);
  }
oder mach ich irgend etwas falsch???

Geändert von Ben (31.12.2005 um 15:50 Uhr)
Xean ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 29.12.2005, 15:59 Nach oben    #5
Erfahrener Benutzer
 
Benutzerbild von karahead
 
Registriert seit: 23.11.2005
Ort: Stadtallendorf
Beiträge: 139
Standard

Na vielleicht liefert createScreenCapture(rect); nicht zwei mal das selbe Objekt zurück.
Teste doch mal:
Code:
BufferedImage b1 = r.createScreenCapture(rect);
BufferedImage b2 = b1.clone();
System.out.println(b1.equals(b2));
Wenn die Ausgabe true ist, dann liegt es an createScreenCapture(rect);
Wenn die Ausgabe false ist, dann liegt es an der equals Methode und du musst sie vielleicht
überschreiben.

Mehr fällt mir nicht ein, da ich mich bisher kaum mit den BufferedImages beschäftigt habe.
__________________
Die Menschen wünschen sich Unsterblichkeit, aber wissen nichts anzufangen an einem verregneten Sonntag Nachmittag.
karahead ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 29.12.2005, 16:21 Nach oben    #6
Oliver O.
 
Benutzerbild von Xean
 
Registriert seit: 17.08.2005
Beiträge: 427
Standard

naja, b1.toString() und b2.toString() sind ja so zimlich gleich:
Code:
BufferedImage@108786b: type = 1 DirectColorModel: rmask=ff0000 gmask=ff00 bmask=ff amask=0 IntegerInterleavedRaster: width = 100 height = 100 #Bands = 3 xOff = 0 yOff = 0 dataOffset[0] 0 
BufferedImage@119c082: type = 1 DirectColorModel: rmask=ff0000 gmask=ff00 bmask=ff amask=0 IntegerInterleavedRaster: width = 100 height = 100 #Bands = 3 xOff = 0 yOff = 0 dataOffset[0] 0
nur die ersten 20 Buchstaben nicht...
Na klar, ich vergleiche einfach so:
Code:
if(b1.toString().substring(20).compareTo(b1.toString().substring(20)) == 0){}
Ok, danke für eure hilfe

Geändert von Ben (31.12.2005 um 15:51 Uhr)
Xean ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 31.12.2005, 15:40 Nach oben    #7
Sesselkleber
 
Benutzerbild von sparrow
 
Registriert seit: 17.01.2005
Beiträge: 581
Standard

Wenn du darauf hinaus willst 2 Bilder zu vergleichen um deren Unterscheide herauszufinden wirst du nciht umhin kommen die Bidler Pixel für Pixel miteinander zu vergleichen.

Gruß
Sparrow
sparrow ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 31.12.2005, 18:59 Nach oben    #8
Erfahrener Benutzer
 
Benutzerbild von karahead
 
Registriert seit: 23.11.2005
Ort: Stadtallendorf
Beiträge: 139
Standard

Also dann doch wie ich dachte, die equals() Methode überschreiben.
__________________
Die Menschen wünschen sich Unsterblichkeit, aber wissen nichts anzufangen an einem verregneten Sonntag Nachmittag.
karahead ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 31.12.2005, 21:04 Nach oben    #9
Sesselkleber
 
Benutzerbild von sparrow
 
Registriert seit: 17.01.2005
Beiträge: 581
Standard

Nein, überschreiben mußt du nichts.

Wir zäumen das Pferd gerade von hinten auf.
Was genau möchtest du denn erreichen?
Und sag jetzt bitte nicht Bidler vergleichen
Wofür das Ganze? Um doppelte Bilder auf der Fesplatte zu finden, oder um festzustellen ob sich ein bestimmtesw Bild verändert hat -> Webcam?

Gruß
Sparrow
sparrow ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 01.01.2006, 08:19 Nach oben    #10
Oliver O.
 
Benutzerbild von Xean
 
Registriert seit: 17.08.2005
Beiträge: 427
Standard

Also, ich habe einen Roboter, der ein Gegenstand unter eine Kamara hält, die Kamara macht ein Photo, und mein Porg teilt dieses in 9x9 kleine Photos, die ich mit einem andern Photo(ohne Gegenstand) vergleiche, um herauszufinden, wie groß das ding ist, alle phototeile, die dann sagen, das ein Teil der Gegendes drauf zusehen ist werden wieder in 9x9 kleine Photos aufheteilt um genauer zu wissen, wie groß es ist, um dann diesen gegenstand in eine bestimmte box zu legen

um zu wissen, wo der Gegenstand ist, muss ich wissen welches Teil-Bild nicht dem orginal-Bild enspricht
Xean ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 01.01.2006, 12:14 Nach oben    #11
Sesselkleber
 
Benutzerbild von sparrow
 
Registriert seit: 17.01.2005
Beiträge: 581
Standard

Dann wirst du um ein Pixelgenaues vergleichen nicht herum kommen.
Mit Hilfe von BufferedImage.getRGB(int x, int y) kannst du die RGB-Farbwerte eines Pixels herauslesen und kannst so die Pixel zweier Bilder miteinander vergleichen.
Dabei mußt du aber warhscheinlich eine gewisse Tolleranz einbauen, da ja bereis kleineste Veränderungen der Helligkeit z. B. eine Änderung des gesamtem Bildes nach sich ziehen.
Wenn du so vorgehst könntest du sogar, je nachdem wie gut dein Code am Ende ist, die Größe des veränderten Objekts Pixelgenau bestimmen.

Gruß
Sparrow
sparrow ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
PingBacks sind an
RefBacks sind aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
bilder vergleichen Xean Desktop-Applikationen und Grafik 3 30.05.2006 22:57
Zeitdifferenzen vergleichen robo47 Datenbanken 5 14.05.2006 11:15
BufferedImage bemalen - Vorgehensweise? Sayang Desktop-Applikationen und Grafik 5 11.05.2006 15:14
BufferedImage problem alekz Allgemeine Java-Programmierung 5 08.09.2005 14:39
Dateien mit einander vergleichen DoX Allgemeine Java-Programmierung 5 28.09.2004 14:19


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:51 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45