'da iki dizinin karşılaştırılması İlkel bir OCR projesi yapıyorum. Bir görüntü matrisini sayı matrisleriyle karşılaştıran ve en yüksek sayı matrisi en iyi eşleşmeyle "puanla" yazan bir yöntem yazdım. Bir OCR
public double compareMatrices(int[][] num, int[][] img) {
int nNumRows = num.length;
int nNumCols = num[0].length;
int nImgRows = img.length;
int nImgCols = img[0].length;
double highest = 0;
for (int row = 0; row < nImgRows - nNumRows + 1; row++) {
for (int col = 0; col < nImgCols - nNumCols + 1; col++) {
double score = 0;
for
(int row_offset = 0; row_offset < nNumRows; row_offset++) {
for (int col_offset = 0;
col_offset < nNumCols; col_offset++) {
int imgRowIndex = row + row_offset;
int imgColIndex = col + col_offset;
int numV = num[row_offset][col_offset];
int imgV = img[imgRowIndex][imgColIndex];
if ((imgV == 1) && (numV == 1)) {
score +=1;
} else if ((numV == 1) & (imgV == 0)) {
score -= 0.25;
} else if ((numV == 0) && (imgV == 0)) {
score += 0.25;
}
}
}
if (score > highest) {
highest = score;
}
}
}
return highest;
}
Şimdi
compareMatrices
yönteminden puanları karşılaştırarak en uygun olanıdır sayı matrisleri belirleyen bir yöntem yazmak çalışıyorum: İşte benim yöntemidir. Ben ne
imgd0
bir test görüntüsü olduğu bu, (ya ben bile sadece karşılaştırıldığında edilecek bir görüntü matrisi olacak diyebilir resmini belirtmek gerekir??):
public String FindBestMatch() {
numFiles.getMatrix("zero");
compareMatrices(int[][] zero, imgd0);
numFiles.getMatrix("one");
compareMatrices(int[][] one, imgd0);
numFiles.getMatrix("two");
compareMatrices(int[][] two, imgd0);
numFiles.getMatrix("three");
compareMatrices(int[][] three, imgd0);
numFiles.getMatrix("four");
compareMatrices(int[][] four, imgd0);
numFiles.getMatrix("five");
compareMatrices(int[][] five, imgd0);
numFiles.getMatrix("six");
compareMatrices(int[][] six, imgd0);
numFiles.getMatrix("seven");
compareMatrices(int[][] seven, imgd0);
numFiles.getMatrix("eight");
compareMatrices(int[][] eight, imgd0);
numFiles.getMatrix("nine");
compareMatrices(int[][] nine, imgd0);
her sayı matrisine geçmesi daha bunu yazmak için daha iyi bir yolu yoktur koşma, Peki soruyorum benim
FindBestMatch
yöntemi için ise
public class NumFiles {
private int[][] one = makeMatrix("one.txt");
private int[][] two= makeMatrix("two.txt");
private int[][] three= makeMatrix("three.txt");
private int[][] four= makeMatrix("four.txt");
private int[][] five= makeMatrix("five.txt");
private int[][] six= makeMatrix("six.txt");
private int[][] seven= makeMatrix("seven.txt");
private int[][] eight= makeMatrix("eight.txt");
private int[][] nine= makeMatrix("nine.txt");
private int[][] zero= makeMatrix("zero.txt");
public NumFiles() {
}
public int[][] getMatrix(String num){
if (num == "one") {
return one;
}
else if (num == "two"){
return two;
}
else if (num == "three"){
return three;
}
else if (num == "four") {
return four;
}
else if (num == "five") {
return five;
}
else if (num == "six") {
return six;
}
else if (num == "seven"){
return seven;
}
else if (num == "eight"){
return eight;
}
else if (num == "nine") {
return nine;
}
else if (num == "zero") {
return zero;
}
else {
int [][] k = {{-1},{-1}};
return k;
}
}
:
numFiles.getMatrix gelen bir yöntemdir nerede Bir si karşısında her defasında compareMatrices
ngle test resmi? Teşekkürler!
== öğesini değil Dizeleri karşılaştırmak için eşittir yöntemini kullanırsınız. –
@GilbertLeBlanc ==, yapmaya çalıştığım şey için iyi çalışıyor. Gerçekten sadece 'FindBestMatch' yöntemiyle sorun yaşıyorum – amizz
Sorununuz tam olarak nerede? Soruyu iyileştirmek için [Minimal, Tam ve Doğrulanabilir bir örnek nasıl oluşturulur?] (Http://stackoverflow.com/help/mcve) adresine de bakabilirsiniz. Teşekkürler! –