def svmEvaluate(model, digits, samples, labels):
    predictions = svmPredict(model, samples)
    print predictions

    accuracy = (labels == predictions).mean()
    print('Percentage Accuracy: %.2f %%' % (accuracy * 100))

    confusion = np.zeros((CLASS_N + 1, CLASS_N + 1), np.int32)
    print predictions.shape
    print labels.shape
    for i, j in zip(labels, predictions):
        confusion[int(i), int(j)] += 1
    vis = []
    # i = 0
    for img, flag in zip(digits, predictions == labels):
        img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
        if not flag:
            img[..., :2] = 0
        # print str(unichr(int(labels[i]) + 96))
        # print str(unichr(int(predictions[i]) + 96))
        # cv2.imshow('dupaia', img)
        # cv2.waitKey(0)
        # i += 1
        vis.append(img)
    return mosaic(25, vis)
示例#2
0
def generate_svm():
    digits, labels = load_digits(DIGITS_FN)

    print('preprocessing...')
    # shuffle digits
    rand = np.random.RandomState(321)
    shuffle = rand.permutation(len(digits))
    digits, labels = digits[shuffle], labels[shuffle]

    digits2 = list(map(deskew, digits))
    samples = preprocess_hog(digits2)

    train_n = int(0.9*len(samples))
    cv2.imshow('test set', mosaic(25, digits[train_n:]))
    digits_train, digits_test = np.split(digits2, [train_n])
    samples_train, samples_test = np.split(samples, [train_n])
    labels_train, labels_test = np.split(labels, [train_n])


    print('training SVM...')
    model = SVM(C=2.67, gamma=5.383)
    model.train(samples_train, labels_train)
    vis = evaluate_model(model, digits_test, samples_test, labels_test)
    print('saving SVM as "digits_svm.dat"...')
    return model

    cv2.waitKey(0)
示例#3
0
def generate_mosaic(directory):
    digits = np.empty([0,SZ,SZ])
    prefix = str(SZ)+'/cropped_img'
    suffix = '.png'
    for i in range(1,11):
        for j in range(20,100):
            infix= '%03d-%05d' % (i, j)
            fname = directory+prefix+infix+suffix
            img = cv2.imread(fname, 0)
            digits = np.append(digits, np.array([img]),0)
    cv2.imwrite('font'+str(SZ)+'.png', mosaic(20, digits))
def evaluate_model(model, digits, samples, labels):
    resp = model.predict(samples)
    err = (labels != resp).mean()
    print('error: %.2f %%' % (err * 100))

    confusion = np.zeros((10, 10), np.int32)
    for i, j in zip(labels, resp):
        confusion[i, int(j)] += 1
    print('confusion matrix:')
    print(confusion)
    print()

    vis = []
    for img, flag in zip(digits, resp == labels):
        img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
        if not flag:
            img[..., :2] = 0
        vis.append(img)
    return mosaic(25, vis)
示例#5
0
def svmEvaluate(model, digits, samples, labels):
    predictions = svmPredict(model, samples)
    accuracy = (labels == predictions).mean()
    print('Percentage Accuracy: %.2f %%' % (accuracy*100))

    confusion = np.zeros((10, 10), np.int32)
    for i, j in zip(labels, predictions):
        confusion[int(i), int(j)] += 1
    print('confusion matrix:')
    print(confusion)

    vis = []
    for img, flag in zip(digits, predictions == labels):
        img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
        if not flag:
            img[...,:2] = 0
        
        vis.append(img)
    return mosaic(25, vis)
示例#6
0
def svmEvaluate(model, digits, samples, labels):
    predictions = svmPredict(model, samples)
    accuracy = (labels == predictions).mean()
    print('Percentage Accuracy: %.2f %%' % (accuracy*100))

    confusion = np.zeros((10, 10), np.int32)
    for i, j in zip(labels, predictions):
        confusion[int(i), int(j)] += 1
    print('confusion matrix:')
    print(confusion)

    vis = []
    for img, flag in zip(digits, predictions == labels):
        img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
        if not flag:
            img[...,:2] = 0
        
        vis.append(img)
    return mosaic(25, vis)
示例#7
0
def evaluate_model(model, digits, samples, labels):
    resp = model.predict(samples)
    err = (labels != resp).mean()
    print 'error: %.2f %%' % (err*100)

    confusion = np.zeros((10, 10), np.int32)
    for i, j in zip(labels, resp):
        confusion[i, j] += 1
    print 'confusion matrix:'
    print confusion
    print

    vis = []
    for img, flag in zip(digits, resp == labels):
        img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
        if not flag:
            img[...,:2] = 0
        vis.append(img)
    return mosaic(25, vis)
示例#8
0
def evaluate_model(model, digits, samples, labels):
    resp = model.predict(samples)
    err = (labels != resp).mean()
    print('error: %.2f %%' % (err * 100))
    # confusion table, where x is ground-truth and y is predicted
    confusion = np.zeros((10, 10), np.int32)
    for i, j in zip(labels, resp):
        confusion[i, int(j)] += 1
    print('confusion matrix:')
    print(confusion)
    print()
    # if not correctly predicted, set 0 all channels except Red to make it red
    vis = []
    for img, flag in zip(digits, resp == labels):
        img = np.uint8((img - img.min()) / (img.max() - img.min()) * 255.)
        img = cv.cvtColor(img, cv.COLOR_GRAY2BGR)
        if not flag:
            img[..., :2] = 0
        vis.append(img)
    return mosaic(25, vis)
示例#9
0
def main():
    print __doc__

    digits, labels = load_digits(DIGITS_FN)

    print 'preprocessing...'
    # shuffle digits
    rand = np.random.RandomState(321)
    shuffle = rand.permutation(len(digits))
    digits, labels = digits[shuffle], labels[shuffle]

    digits2 = map(deskew, digits)
    samples = preprocess_hog(digits2)

    train_n = int(0.9*len(samples))
    cv2.imshow('test set', mosaic(25, digits[train_n:]))
    digits_train, digits_test = np.split(digits2, [train_n])
    samples_train, samples_test = np.split(samples, [train_n])
    labels_train, labels_test = np.split(labels, [train_n])

    print 'training KNearest...'
    model = KNearest(k=4)
    model.train(samples_train, labels_train)
    vis = evaluate_model(model, digits_test, samples_test, labels_test)
    cv2.imshow('KNearest test', vis)

    print 'training SVM...'
    model = SVM(C=2.67, gamma=5.383)
    model.train(samples_train, labels_train)
    vis = evaluate_model(model, digits_test, samples_test, labels_test)
    cv2.imshow('SVM test', vis)
    print 'saving SVM as "digits_svm.dat"...'
    model.save('digits_svm.dat')

    print 'training SimpleAI...'
    model = simpleai.SimpleAI(class_n = CLASS_N)
    model.train(samples_train, labels_train)
    vis = evaluate_model(model, digits_test, samples_test, labels_test)
    cv2.imshow('SimpleAI test', vis)

    cv2.waitKey(0)
示例#10
0
def evaluate_model(model, items, samples, labels):
    resp = model.predict(samples)
    err = (labels != resp).mean()
    print 'error: %.2f %%' % (err*100)

    confusion = np.zeros((len(shoeCategory), len(shoeCategory)), np.int32)
    for i, j in zip(labels, resp):
        confusion[i, j] += 1
    print 'confusion matrix:'
    print confusion
    print

    vis = []
    for img, guess, actual in zip(items, resp, labels):
        img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
        cv2.putText(img, idCategory[int(guess)], (0,7), cv2.FONT_HERSHEY_SIMPLEX, 0.35, 255)
        cv2.putText(img, idCategory[int(actual)], (0,15), cv2.FONT_HERSHEY_SIMPLEX, 0.35, 255)
        # cv2.putText(img,"actual=" + idCategory[int(guess)], (0,15), cv2.FONT_HERSHEY_SIMPLEX, 0.25, 255)
        if not guess == actual:
            img[...,:2] = 0
        vis.append(img)
    return mosaic(mosaic_SZ, vis), (err*100)
示例#11
0
def evaluate_model(model, items, samples, labels):
    resp = model.predict(samples)
    err = (labels != resp).mean()
    print 'error: %.2f %%' % (err * 100)

    confusion = np.zeros((len(shoeCategory), len(shoeCategory)), np.int32)
    for i, j in zip(labels, resp):
        confusion[i, j] += 1
    print 'confusion matrix:'
    print confusion
    print

    vis = []
    for img, guess, actual in zip(items, resp, labels):
        img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
        cv2.putText(img, idCategory[int(guess)], (0, 7),
                    cv2.FONT_HERSHEY_SIMPLEX, 0.35, 255)
        cv2.putText(img, idCategory[int(actual)], (0, 15),
                    cv2.FONT_HERSHEY_SIMPLEX, 0.35, 255)
        # cv2.putText(img,"actual=" + idCategory[int(guess)], (0,15), cv2.FONT_HERSHEY_SIMPLEX, 0.25, 255)
        if not guess == actual:
            img[..., :2] = 0
        vis.append(img)
    return mosaic(mosaic_SZ, vis), (err * 100)
示例#12
0
    print __doc__

    args, _ = getopt.getopt(sys.argv[1:], '', ['input='])
    args = dict(args)
    args.setdefault('--input', 'data/info.dat')

    print 'reading file %s' % args['--input']
    lines = [line.strip() for line in open(args['--input'])]

    vis = []
    f = open('./positives.txt', 'w')
    for line in lines:
        rows = line.split()
        source_file_name = rows[0]
        print line
        if len(rows) != 6:
            print line
        # print "%d:%d, %d:%d" % (int(rows[2]), int(rows[4])+ int(rows[2]), int(rows[3]), int(rows[5])+ int(rows[3]))
        img = cv2.imread('/' + source_file_name, cv2.CV_LOAD_IMAGE_GRAYSCALE)

        cr = img[int(rows[3]):int(rows[5]) + int(rows[3]),
                 int(rows[2]):int(rows[4]) + int(rows[2])]
        vis.append(cv2.resize(cr, (50, 50)))
        fn = './positive_images/' + source_file_name.split('/')[2]
        f.write(fn + '\n')
        cv2.imwrite(fn, cr)

    cv2.imwrite('out/test_data.jpg', mosaic(50, np.array(vis)))

    f.close()
示例#13
0
if __name__ == '__main__':
    print __doc__

    digits, labels = load_digits(DIGITS_FN)

    print 'preprocessing...'
    # shuffle digits
    rand = np.random.RandomState(321)
    shuffle = rand.permutation(len(digits))
    digits, labels = digits[shuffle], labels[shuffle]

    digits2 = map(deskew, digits)
    samples = preprocess_hog(digits2)

    train_n = int(0.9*len(samples))
    cv2.imshow('test set', mosaic(25, digits[train_n:]))
    digits_train, digits_test = np.split(digits2, [train_n])
    samples_train, samples_test = np.split(samples, [train_n])
    labels_train, labels_test = np.split(labels, [train_n])


    print 'training KNearest...'
    model = KNearest(k=4)
    model.train(samples_train, labels_train)
    vis = evaluate_model(model, digits_test, samples_test, labels_test)
    cv2.imshow('KNearest test', vis)

    print 'training SVM...'
    model = SVM(C=2.67, gamma=5.383)
    model.train(samples_train, labels_train)
    vis = evaluate_model(model, digits_test, samples_test, labels_test)
示例#14
0
if __name__ == '__main__':
    print 'WORK PATH = ' + os.getcwd()
    model_path = r'E:\APC\sample_test\model.npy'
    vector_stub_path = r'e:\APC\feature\canditate.vec'

    vec_stu = stub.read(vector_stub_path)

    test_path = r'E:\APC\sample'
    test_files = os.listdir(test_path)
    for test_file in test_files:
        img = plt.imread(os.path.join(test_path, test_file))[45:246,
                                                             160:565, :]
        img = cv2.resize(img, (256, 128))
        # num_features = len(get_hog_feature(img))
        model = load_model(model_path,
                           input_dim=5000,
                           hidden_dim=200,
                           out_dim=2)
        scale_set = np.arange(0.8, 1.2, 0.1)
        rect_init_size = [50, 30]
        step_size = [8, 8]
        head_p, head_n = detect(img, model, rect_init_size, scale_set,
                                step_size, vec_stu)
        plt.subplot(1, 2, 1)
        plt.imshow(mosaic(10, head_p))
        plt.title('HEAD')
        plt.subplot(1, 2, 2)
        plt.imshow(mosaic(20, head_n))
        plt.title('NO HEAD')
        plt.show()
示例#15
0
    #digits = np.concatenate((digits, fonts), axis=0)
    #labels = np.concatenate((labels, fontlabels), axis=0)
    print digits.shape, labels.shape

    print 'preprocessing...'
    # shuffle digits
    rand = np.random.RandomState(321)
    shuffle = rand.permutation(len(digits))
    digits, labels = digits[shuffle], labels[shuffle]

    digits2 = map(deskew, digits)
    samples = preprocess_hog(digits2)

    train_n = int(0.9*len(samples))
    #train_n = int(1.0*len(samples))
    cv2.imshow('train set', mosaic(25, digits[:train_n]))
    digits_train, digits_test = np.split(digits2, [train_n])
    samples_train, samples_test = np.split(samples, [train_n])
    labels_train, labels_test = np.split(labels, [train_n])


    digits_img_test = cv2.imread('final'+str(SZ)+'.png', 0)
    digits_img_test = cv2.bitwise_not(digits_img_test)
    digits_test = split2d(digits_img_test, (SZ, SZ))
    digits2_test = map(deskew, digits_test)
    samples_test = preprocess_hog(digits2_test)
    cv2.imshow('test set', mosaic(9, digits_test))
    #cv2.imshow('test set', mosaic(25, digits_test))

    print 'training SVM...'
    model = SVM(C=2.67, gamma=5.383)
示例#16
0
    image_source = option_dict['image_source']

    shoes, samples, labels = preprocessShoes()

    print 'creating mosaic...'
    train_n = int(0.9 * len(samples))

    shoes_train, shoes_test = np.split(shoes, [train_n])
    samples_train, samples_test = np.split(samples, [train_n])
    labels_train, labels_test = np.split(labels, [train_n])

    for label in shoeCategory.values():
        images = [i for i, l in zip(shoes_test, labels_test) if (l == label)]
        if (len(images) > 0):
            cv2.imwrite('out/test_' + idCategory[label] + '_set.jpg',
                        mosaic(20, images))

    for label in shoeCategory.values():
        images = [i for i, l in zip(shoes_test, labels_test) if (l == label)]
        if (len(images) > 0):
            cv2.imwrite('out/test_' + idCategory[label] + '_set.jpg',
                        mosaic(20, images))

    cv2.imwrite('out/test_set.jpg', mosaic(20, shoes_test))
    cv2.imwrite('out/train_set.jpg', mosaic(20, shoes_train))

    print 'training KNearest...'
    model = KNearest(k=4)
    model.train(samples_train, labels_train)
    vis, knearestError = evaluate_model(model, shoes_test, samples_test,
                                        labels_test)
示例#17
0
#!/usr/bin/python3

import cv2
import sys

from common import mosaic, KNearest, SVM, OCR

from pregrandbux import Grandbux

if __name__ == '__main__':
    #    model = KNearest(k=4)
    model = SVM(C=2.67, gamma=5.383)

    ABC = 'abcdefghijklmnopqrstuvwxyz'
    ocr = OCR(ABC, model)
    do_load = len(sys.argv) > 1
    if do_load:
        #        ocr.train('out-min', 'grandbux_svm.dat', 1.0)
        ocr.load('grandbux_svm.dat')
        samples = ocr.preprocess_hog(Grandbux(sys.argv[1]).segments(20))
        print('SOLVE: {}'.format(''.join(ocr.labels(ocr.predict(samples)))))
    else:
        print('training SVM...')
        ocr.train('out-min', 'grandbux_svm.dat')
        cv2.imshow('SVM', mosaic(25, ocr.digits))

    cv2.waitKey(0)
示例#18
0
        #     get_hog_feature(cv2.imread(os.path.join(test_path, test_files[0]))))
        num_features = len(vec_stu)
        num_classes = 2

        model = load_model(model_path, input_dim=num_features,
                           hidden_dim=num_hidden_ep, out_dim=num_classes)

        head_p = []
        head_n = []

        for elem in test_files:
            if os.path.splitext(elem)[-1] not in EXT_DICT:
                continue
            data = cv2.imread(os.path.join(test_path, elem))
            start = time()
            feature = get_icf_feature(data, vec_stu)
            prob, res = predict(model, feature)
            print "spend time: %f" % (time() - start)
            if res == 1:
                head_n.append(cv2.resize(data, (32, 32)))
            else:
                head_p.append(cv2.resize(data, (32, 32)))

        plt.subplot(1,2,1)
        plt.imshow(mosaic(20, head_p))#, aspect='auto')
        plt.title('HEAD')
        plt.subplot(1,2,2)
        plt.imshow(mosaic(20, head_n))
        plt.title('NO HEAD')
        plt.show()
示例#19
0
文件: digits.py 项目: jepierre/opencv
if __name__ == "__main__":
    print __doc__

    digits, labels = load_digits(DIGITS_FN)

    print "preprocessing..."
    # shuffle digits
    rand = np.random.RandomState(321)
    shuffle = rand.permutation(len(digits))
    digits, labels = digits[shuffle], labels[shuffle]

    digits2 = map(deskew, digits)
    samples = preprocess_hog(digits2)

    train_n = int(0.9 * len(samples))
    cv2.imshow("test set", mosaic(25, digits[train_n:]))
    digits_train, digits_test = np.split(digits2, [train_n])
    samples_train, samples_test = np.split(samples, [train_n])
    labels_train, labels_test = np.split(labels, [train_n])

    print "training KNearest..."
    model = KNearest(k=4)
    model.train(samples_train, labels_train)
    vis = evaluate_model(model, digits_test, samples_test, labels_test)
    cv2.imshow("KNearest test", vis)

    print "training SVM..."
    model = SVM(C=2.67, gamma=5.383)
    model.train(samples_train, labels_train)
    vis = evaluate_model(model, digits_test, samples_test, labels_test)
    cv2.imshow("SVM test", vis)
示例#20
0
	# process each cell - if the cell has a digit (largest contour area exceeds threshold area), then mark cell for training
	labels = []
	samples = []
	for i in range(81):
		cell = cells[i]
		contours, hierarchy = cv2.findContours(cell.copy(), cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
		if len(contours) > 0:
			largestContour = contours[np.argmax(map(cv2.contourArea, contours))]
			if cv2.contourArea(largestContour) >= DIGIT_MIN_AREA:
				cv2.imshow('What digit is this?', cell)
				label = cv2.waitKey(0)-48
				if (label >= 1) and (label <= 9):
					labels.append(label)
					samples.append(cell)
				elif (label == 27):
					break

	cv2.imshow('Acquired data', mosaic(25, samples))
	print labels

	cv2.waitKey(0)

	np.save('data/samples_sudoku' + iteration, samples)
	np.save('data/labels_sudoku' + iteration, labels)
	print 'Data #' + iteration + ' saved'

	# exit
	cv2.destroyAllWindows()

    print __doc__

    args, _ = getopt.getopt(sys.argv[1:], "", ["input="])
    args = dict(args)
    args.setdefault("--input", "data/info.dat")

    print "reading file %s" % args["--input"]
    lines = [line.strip() for line in open(args["--input"])]

    vis = []
    f = open("./positives.txt", "w")
    for line in lines:
        rows = line.split()
        source_file_name = rows[0]
        print line
        if len(rows) != 6:
            print line
        # print "%d:%d, %d:%d" % (int(rows[2]), int(rows[4])+ int(rows[2]), int(rows[3]), int(rows[5])+ int(rows[3]))
        img = cv2.imread("/" + source_file_name, cv2.CV_LOAD_IMAGE_GRAYSCALE)

        cr = img[int(rows[3]) : int(rows[5]) + int(rows[3]), int(rows[2]) : int(rows[4]) + int(rows[2])]
        vis.append(cv2.resize(cr, (50, 50)))
        fn = "./positive_images/" + source_file_name.split("/")[2]
        f.write(fn + "\n")
        cv2.imwrite(fn, cr)

    cv2.imwrite("out/test_data.jpg", mosaic(50, np.array(vis)))

    f.close()
示例#22
0
    print('preprocessing...')
    # shuffle digits
    rand = np.random.RandomState(321)  #随机种子321
    shuffle = rand.permutation(len(digits))
    digits, labels = digits[shuffle], labels[shuffle]  #打乱数字顺序
    # deskew
    deskewed_digits = list(map(deskew, digits))  #纠正图片倾斜
    # hog
    samples = preprocess_hog(deskewed_digits)  #计算hog特征
    # split into validation sets
    train_n = int(0.8 * len(samples))  #划分训练测试集
    print(train_n)
    # what is mosaic?

    show('test set', mosaic(25, digits[train_n:]))

    # the original digits
    digits_train, digits_test = np.split(deskewed_digits, [train_n])
    # the descriptors
    samples_train, samples_test = np.split(samples, [train_n])
    labels_train, labels_test = np.split(labels, [train_n])

    print('training KNearest...')  #knn分类器
    model = KNearest(k=4)
    model.train(samples_train, labels_train)  # provide x, y
    vis = evaluate_model(model, digits_test, samples_test, labels_test)
    show('KNearest test', vis)

    print('training SVM...')  #SVM分类器
    model = SVM(C=2.67, gamma=5.383)
示例#23
0
  databaseUri = option_dict['database']
  image_source = option_dict['image_source']

  shoes, samples, labels = preprocessShoes()

  print 'creating mosaic...'
  train_n = int(0.9*len(samples))

  shoes_train, shoes_test = np.split(shoes, [train_n])
  samples_train, samples_test = np.split(samples, [train_n])
  labels_train, labels_test = np.split(labels, [train_n])

  for label in shoeCategory.values():
    images = [i for i, l in zip(shoes_test, labels_test) if (l == label)]
    if (len(images) > 0):
      cv2.imwrite('out/test_' + idCategory[label]  + '_set.jpg', mosaic(20, images))

  for label in shoeCategory.values():
    images = [i for i, l in zip(shoes_test, labels_test) if (l == label)]
    if (len(images) > 0):
      cv2.imwrite('out/test_' + idCategory[label]  + '_set.jpg', mosaic(20, images))

  cv2.imwrite('out/test_set.jpg', mosaic(20, shoes_test))
  cv2.imwrite('out/train_set.jpg', mosaic(20, shoes_train))


  print 'training KNearest...'
  model = KNearest(k=4)
  model.train(samples_train, labels_train)
  vis, knearestError = evaluate_model(model, shoes_test, samples_test, labels_test)
  cv2.imwrite('out/KNearest_test_' + str(SZ) + '.jpg', vis)
示例#24
0
    ri = i/10
    ci = i%10
    if ci != 9 and ri!=9:
        src = bm[ri:ri+2, ci:ci+2 , :].reshape((4,2))
        dst = np.array( [ [ci*50,ri*50],[(ci+1)*50-1,ri*50],[ci*50,(ri+1)*50-1],[(ci+1)*50-1,(ri+1)*50-1] ], np.float32)
        retval = cv2.getPerspectiveTransform(src,dst)
        warp = cv2.warpPerspective(res2,retval,(450,450))
        output[ri*50:(ri+1)*50-1 , ci*50:(ci+1)*50-1] = warp[ri*50:(ri+1)*50-1 , ci*50:(ci+1)*50-1].copy()
        
output = cv2.cvtColor(output,cv2.COLOR_BGR2GRAY)
output = cv2.GaussianBlur(output,(5,5),0)
output = cv2.adaptiveThreshold(output,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,3,2)
t = time.clock()-start
imglist = []
print '(%.2f seconds)\n' % t
for i in range(0,450,50):
    for j in range(0,450,50):
        #cv2.imshow('cell', output[i+2:i+48, j+2:j+48])
        temp = output[i+2:i+48, j+2:j+48]
        temp = cv2.resize(temp,(20,20), interpolation = cv2.INTER_CUBIC)
        imglist.append(temp)
        #cv2.waitKey(0)
from common import mosaic
cv2.imwrite('final.png', mosaic(9, imglist))
cv2.imshow('final', mosaic(9, imglist))
cv2.waitKey(0)
cv2.imwrite('output.png', output)
cv2.imshow('img', output)
cv2.waitKey(0)
cv2.destroyAllWindows()
示例#25
0
#!/usr/bin/python3

import cv2
import sys

from common import mosaic, KNearest, SVM, OCR

from pregrandbux import Grandbux

if __name__ == "__main__":
    #    model = KNearest(k=4)
    model = SVM(C=2.67, gamma=5.383)

    ABC = "abcdefghijklmnopqrstuvwxyz"
    ocr = OCR(ABC, model)
    do_load = len(sys.argv) > 1
    if do_load:
        #        ocr.train('out-min', 'grandbux_svm.dat', 1.0)
        ocr.load("grandbux_svm.dat")
        samples = ocr.preprocess_hog(Grandbux(sys.argv[1]).segments(20))
        print("SOLVE: {}".format("".join(ocr.labels(ocr.predict(samples)))))
    else:
        print("training SVM...")
        ocr.train("out-min", "grandbux_svm.dat")
        cv2.imshow("SVM", mosaic(25, ocr.digits))

    cv2.waitKey(0)
示例#26
0
labels_train_unrolled = unroll_responses(labels_train, CLASS_N)
model.train(digits_train, labels_train_unrolled, None, params=params)
model.save('dig_nn.dat')
model.load('dig_nn.dat')

def evaluate(model, samples, labels):
    '''Evaluates classifier preformance on a given labeled samples set.'''
    ret, resp = model.predict(samples)
    resp = resp.argmax(-1)
    error_mask = (resp == labels)
    accuracy = error_mask.mean()
    return accuracy, error_mask

# evaluate model
train_accuracy, _ = evaluate(model, digits_train, labels_train)
print 'train accuracy: ', train_accuracy
test_accuracy, test_error_mask = evaluate(model, digits_test, labels_test)
print 'test accuracy: ', test_accuracy

# visualize test results
vis = []
for img, flag in zip(digits_test, test_error_mask):
    img = np.uint8(img).reshape(SZ, SZ)
    img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
    if not flag:
        img[...,:2] = 0
    vis.append(img)
vis = mosaic(25, vis)
cv2.imshow('test', vis)
cv2.waitKey()