Example #1
0
def c_main(path, model):
    image_data = process.pre_process(path)
    predict.predict(image_data, model)
    process.last_process(image_data[1])
    image_info = get_feature.main(image_data[1])

    return image_data[1] + '.png', image_info
# 将列表中文件名排序, 方便之后操作, 不做也可以hhh
file_list.sort(key=lambda x: int(x[:-4]))
# 打印文件名列表的内容, 程序出错的时候可以看看是不是没有找到文件
print('file_list: ', file_list)

# 遍历这个文件列表依次取出里面的文件名来放入模型预测
for file_name in file_list:
    # 因为file_name只是文件名, 读取文件的时候需要完整的文件路径, 这里拼接一下文件路径
    file_name = os.path.join('./data/mnist/', file_name)
    # 打印文件路径方便对照和调试, 不想加可以去掉
    print(file_name)
    # 读取图片文件
    picture = cv2.imread(file_name)
    # 把读出来的图片放进模型里进行预测, 因为这个操作十分常见且通用, 所以建议封装
    # 这里我们使用了一个封装, 输入图片和模型就能得到最后结果
    # 函数的定义在core.predict文件中
    out = predict(picture=picture, model=model)
    # 把原来28*28大小的图片放大到280*280, 觉得小可以自己调大一点
    large = cv2.resize(picture, (280, 280))
    # 打印结果
    print(out)
    # 创建窗口并显示出来
    cv2.imshow('Result: %d(Next:press Space/Exit:press Esc)' % out, large)
    # 这里用于获取键盘输入, 按下空格切换到下一张, 按下Esc键关闭程序
    if cv2.waitKey(0) == 27:
        break
    # 用于关闭前一个窗口, 防止创建过多的窗口
    cv2.destroyAllWindows()

# 关闭窗口, 多余的操作, 但建议加上,防止CV2运行出错时无法释放资源
cv2.destroyAllWindows()
Example #3
0
def c_main(path, model, ext):
    image_data = process.pre_process(path)
    image_info = predict.predict(image_data, model, ext)

    return image_data[1] + '.' + ext, image_info
# file_name = './data/my_images/6.jpg'
file_name = './data/my_images/7.jpg'

# 读取图片文件并进行简单的预处理, 函数定义在core.photo_utils中
# 注意: mnist中的图片是黑底白字的, 而我们拍摄的一般是白底黑字
# 所以需要转换成黑底白字 函数中 reverse 用来控制是否取反
# 将图片二值化可以更好的进行预测, threshold 用来控制二值化时的阈值
# picture = process_image(file_name, reverse=False)
# 如果需要查看二值化前的原图可以使用 show_origin=True
picture = process_image(file_name,
                        reverse=True,
                        threshold=83,
                        show_origin=True)
# 把读出来的图片放进模型里进行预测, 因为这个操作十分常见且通用, 所以建议封装
# 这里我们使用了一个封装, 输入图片和模型就能得到最后结果
# 函数的定义在core.predict文件中
out = predict(picture=picture,
              model=model,
              draw_in_console=False,
              print_confidence_rate=True)
# 把原来28*28大小的图片放大到280*280, 觉得小可以自己调大一点
large = cv2.resize(picture, (280, 280))
# 打印结果
print('输出结果', out)
# 创建窗口并显示出来
cv2.imshow('Result: %d(Next:press Space/Exit:press Esc)' % out, large)
# 这里用于获取键盘输入, 按下空格切换到下一张, 按下Esc键关闭程序
cv2.waitKey(0)
# 用于关闭前一个窗口, 防止创建过多的窗口
cv2.destroyAllWindows()