![]() |
| | Themen-Optionen | Thema durchsuchen |
| | Nach oben #2 |
| Erfahrener Benutzer Registriert seit: 23.11.2005 Ort: Stadtallendorf
Beiträge: 139
|
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. |
| | |
| | Nach oben #3 |
| Erfahrener Benutzer Registriert seit: 23.11.2005 Ort: Stadtallendorf
Beiträge: 139
|
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. |
| | |
| | Nach oben #4 |
| Oliver O. Registriert seit: 17.08.2005
Beiträge: 427
|
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);
}
Geändert von Ben (31.12.2005 um 15:50 Uhr) |
| | |
| | Nach oben #5 |
| Erfahrener Benutzer Registriert seit: 23.11.2005 Ort: Stadtallendorf
Beiträge: 139
|
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 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. |
| | |
| | Nach oben #6 |
| Oliver O. Registriert seit: 17.08.2005
Beiträge: 427
|
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 Code: if(b1.toString().substring(20).compareTo(b1.toString().substring(20)) == 0){}
Geändert von Ben (31.12.2005 um 15:51 Uhr) |
| | |
| | Nach oben #8 |
| Erfahrener Benutzer Registriert seit: 23.11.2005 Ort: Stadtallendorf
Beiträge: 139
|
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. |
| | |
| | Nach oben #9 |
| Sesselkleber Registriert seit: 17.01.2005
Beiträge: 581
|
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 |
| | |
| | Nach oben #10 |
| Oliver O. Registriert seit: 17.08.2005
Beiträge: 427
|
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 |
| | |
| | Nach oben #11 |
| Sesselkleber Registriert seit: 17.01.2005
Beiträge: 581
|
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 |
| | |
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | Thema durchsuchen |
| |
Ä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 |