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()
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()