Halli Hallo,
Ich sitz hier grade an einer kleinen Aufgabe um 2 Bilder miteinander zu vergleichen. Dabei habe ich per ImageBuffer die Bilder geladen und die Pixel in ein Array geschrieben. Dann versuche ich beide Arrays zu vergleichen und bei einem Unterschied ein "X" in ein neues Array zu schreiben und ein "O" wenn kein Unterschied erkennbar ist.
Leider ist es jetzt so das er nicht genau die Unterschiede herausliest. Liegt eventuell an der Bildqualität (Habe es mit JPEG und PNg) probiert. Jedenfalls stimmen die RBG Werte nicht immer überein. Vielleicht hat jemand von euch eine Idee wie ich da eventuell ein "Abweichung" einbauen könne damit er wirklich die Veränderungen erkennt.
Die beiden Bilder habe ich mal angehängt
Als Ergebniss bekomm ich sowas raus:
XXXXXXXXXX
XOXOOOXOOO
XOXOXOXOXO
XOXOXOXOXO
XOXOXOXOXO
XOXOXOXOXO
XOXOXOXOXO
XOXOXOXOXO
XOOOXOOOXO
XXXXXXXXXX
Was jedoch nicht genau mit den Unterschieden übereinstimmt
Für Hilfe wär ich dankbar =)
Ich sitz hier grade an einer kleinen Aufgabe um 2 Bilder miteinander zu vergleichen. Dabei habe ich per ImageBuffer die Bilder geladen und die Pixel in ein Array geschrieben. Dann versuche ich beide Arrays zu vergleichen und bei einem Unterschied ein "X" in ein neues Array zu schreiben und ein "O" wenn kein Unterschied erkennbar ist.
Leider ist es jetzt so das er nicht genau die Unterschiede herausliest. Liegt eventuell an der Bildqualität (Habe es mit JPEG und PNg) probiert. Jedenfalls stimmen die RBG Werte nicht immer überein. Vielleicht hat jemand von euch eine Idee wie ich da eventuell ein "Abweichung" einbauen könne damit er wirklich die Veränderungen erkennt.
Java:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package trefferanalyse;
import java.awt.Color;
import java.io.File;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
/**
*
* @author Johannes H
*/
public class Trefferanalyse {
static File oFile = new File("c:/test.png");
static File cFile = new File("c:/test2.png");
static Color[][] oArray;
static Color[][] cArray;
static String[][] fArray;
int width;
int height;
public void initPic(File oFile, File cFile, Color[][] oArray, Color[][] cArray) throws IOException {
// Einlesen des Originalen Bildes
BufferedImage oImage = ImageIO.read(oFile);
// Einlesen des Vergleich Bildes
BufferedImage cImage = ImageIO.read(cFile);
//Größe und Höhe des Bildes
width = oImage.getWidth();
height = oImage.getHeight();
//Setzen der Arraygrößen
oArray = new Color[width][height];
cArray = new Color[width][height];
fArray = new String[width][height];
//Pixelfarben auslesen
for(int i = 0; i < oImage.getWidth(); i++) {
for(int j = 0; j < oImage.getHeight();j++) {
int rgb = oImage.getRGB(i, j);
Color c = new Color(rgb);
oArray[i][j] = c;
}
}
for(int i = 0; i < cImage.getWidth(); i++) {
for(int j = 0; j < cImage.getHeight();j++) {
int rgb = cImage.getRGB(i, j);
Color c = new Color(rgb);
cArray[i][j] = c;
}
}
// Vergleichen der Pixel
for(int i = 0; i < oImage.getWidth(); i++) {
for(int j = 0; j < oImage.getHeight(); j++) {
if(oArray[i][j].getRed() == cArray[i][j].getRed() &&
oArray[i][j].getBlue() == cArray[i][j].getBlue() &&
oArray[i][j].getGreen() == cArray[i][j].getGreen()) {
fArray[i][j] = "X";
} else {
fArray[i][j] = "O";
}
}
}
// Ausgabe des EndArrays
for(int i = 0; i < oImage.getWidth(); i++) {
for(int j = 0; j < oImage.getHeight();j++) {
System.out.print(fArray[i][j]);
}
System.out.println();
}
// Ausgabe
// for(int i = 0; i < oImage.getWidth(); i++) {
// for(int j = 0; j < oImage.getHeight();j++) {
// System.out.print(oArray[i][j]);
// }
// }
// System.out.println();
// for(int i = 0; i < cImage.getWidth(); i++) {
// for(int j = 0; j < cImage.getHeight();j++) {
// System.out.print(cArray[i][j]);
// }
// }
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Trefferanalyse eins = new Trefferanalyse();
try {
eins.initPic(oFile, cFile, oArray, cArray);
// TODO code application logic here
} catch (IOException ex) {
Logger.getLogger(Trefferanalyse.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
Die beiden Bilder habe ich mal angehängt
Als Ergebniss bekomm ich sowas raus:
XXXXXXXXXX
XOXOOOXOOO
XOXOXOXOXO
XOXOXOXOXO
XOXOXOXOXO
XOXOXOXOXO
XOXOXOXOXO
XOXOXOXOXO
XOOOXOOOXO
XXXXXXXXXX
Was jedoch nicht genau mit den Unterschieden übereinstimmt
Für Hilfe wär ich dankbar =)