我使用python-opencv制作数字识别程序 . 我使用了朴素贝叶斯分类器 . 我还使用GUI进行在线识别 . 当我向系统提供任何两个或三个数字时它会识别但是默认情况下它会随机提供10个输出,从0到9,因为我提供了总共0到9个数字用于训练 . 所以在测试期间,当我提供任何数字时,它给出的输出具有正确的识别,但随机配有0到10个数字//

例如,如果我给出一个有三个数字为1,2,3的图像 . 系统认识到并输出1,2,3,6,6,0,0,2,6,5 . 所以我想停止10个数字的默认框架,并希望只获得1,2,3作为输出 . 我只需要输出我的数字

import numpy as np
import cv2
import glob
import xlsxwriter
import pdb

train_folder=["E:/DOCUMENT(M.TECHS)/database_train/*.jpg"]
test_folder=["E:/offline/contour4off/*.png"] 

project=[train_folder,test_folder]



dataset_train=[]
dataset_test=[]
combined_sum=[]
train_combined_sum=[]
test_combined_sum=[]




for folder in project:
    print(folder)
    for i in folder:
        files = np.array(glob.glob (i))
        print(files)
        for img in files:
            # reading image using opencv
            img_read=cv2.imread(img,0)

            #resize image into proper dimension given
            dimension=(16,16)
            img_resize=cv2.resize(img_read,dimension,interpolation=cv2.INTER_AREA)

            #threshold or binarize image 
            ret2,thresh_img = cv2.threshold(img_resize,0,1,cv2.THRESH_BINARY+cv2.THRESH_OTSU)

            #feature vector generation: image is a 2D array(matrix) so find each column sum. axis=0 use for column.
            column=np.sum(thresh_img,axis=0)

            #feature vector generation: find each row sum. axis=1 use for row.
            row=np.sum(thresh_img,axis=1)

            #feature vector generation: lower left to upper right diagonal arrays.
            diags = [thresh_img[:: 1,:].diagonal(i) for i in range(-15,16)]

            #feature vector generation: upper left to lower right diagonal arrays.   
            diags1 = [thresh_img[:: -1,:].diagonal(i) for i in range(-15,16)]

            #make list of diagonal from its array.
            a=[n.tolist() for n in diags]
            b=[n.tolist() for n in diags1]

            #feature vector generation: summation of diagonals.
            sum_a= [sum(l) for l in a]
            sum_b= [sum(l) for l in b]

            #concatenate or merge all feature vector like : (column sum, row sum, diagonal sum)
            merge=np.concatenate((column,row,sum_a,sum_b), axis=0)

            # use (.append) to make combined list (of all generated value using loops).for further use.
            combined_sum.append(merge)

train_combined_sum.append(combined_sum[:20000])
test_combined_sum.append(combined_sum[-10:])

x_train=np.vstack(train_combined_sum)
x_test=np.vstack(test_combined_sum)

print(x_train.shape)

print(x_test.shape)

a=[[0],[1],[2],[3],[4],[5],[6],[7],[8],[9]]


aaa=np.repeat(a,2000,axis=0)
bbb=np.repeat(a,1,axis=0)


y_train=np.vstack(aaa)
y_test=np.vstack(bbb)


print(y_train.shape)

print(y_test.shape)



from sklearn.naive_bayes import GaussianNB
gnb = GaussianNB()
gnb.fit(x_train, y_train)

# making predictions on the testing set
y_pred = gnb.predict(x_test)

print(y_pred)