Wie vergleiche ich am besten zwei BufferedImages ?
Meine Aufgabe ist es, die Zahl die auf einem Wasserzähler steht, mit einer Webcam zu Fotographien,
und dieses Bild der Zahl als Zahl zu erkennen.
Da ich noch nicht weiß wie ich ein Programm schreibe, dass mir (zB. alle Stunde) ein Bild macht, hab ich bis jetzt den Teil mit dem Vergleich gemacht.
Mein Programm filtert das Bild --> nur mehr SW.
mein Programm schneidet die Bilder der einzelnen Ziffern aus. (d.h. Rand des Bildes = Rand der Zahl)
nun der Vergleich:
jedoch wird mir für den double-Wert immer "NaN" zurück gegeben.
hat jemand einen Vorschlag für einen Vergleich dieser Art ?
normal müsste es jedoch nach diesem Prinzip funktionieren, da später das BiQ und BiV ziemlich gleich sein werden, wenn die gleiche Zahl darauf steht, da ich die Bilder zum vergleichen nehme, die direkt auf der Ziffernscheibe stehen.
Meine Aufgabe ist es, die Zahl die auf einem Wasserzähler steht, mit einer Webcam zu Fotographien,
und dieses Bild der Zahl als Zahl zu erkennen.
Da ich noch nicht weiß wie ich ein Programm schreibe, dass mir (zB. alle Stunde) ein Bild macht, hab ich bis jetzt den Teil mit dem Vergleich gemacht.
Mein Programm filtert das Bild --> nur mehr SW.
mein Programm schneidet die Bilder der einzelnen Ziffern aus. (d.h. Rand des Bildes = Rand der Zahl)
nun der Vergleich:
Java:
public static double isSame(BufferedImage BiQ, BufferedImage BiV){
double same=0,all=0;
int heightV = BiV.getHeight(),gesX = 0,gesY = 0,
widthV = BiV.getWidth();
int heightQ = BiQ.getHeight(),
widthQ = BiQ.getWidth();
if (heightV < heightQ) {
gesY = heightV;
}else {
gesY = heightQ;
}
if (widthV < widthQ) {
gesY = widthV;
}else {
gesY = widthQ;
}
for (int i = 0; i < gesX ; i++) {
for (int j = 0; j < gesY; j++) {
all++;
if((isBlack(j, i, BiQ) == isBlack(j, i, BiV)) && isBlack(j, i, BiV)){
same++;
}
}
}
return (same/all)*100;
}
jedoch wird mir für den double-Wert immer "NaN" zurück gegeben.
hat jemand einen Vorschlag für einen Vergleich dieser Art ?
normal müsste es jedoch nach diesem Prinzip funktionieren, da später das BiQ und BiV ziemlich gleich sein werden, wenn die gleiche Zahl darauf steht, da ich die Bilder zum vergleichen nehme, die direkt auf der Ziffernscheibe stehen.