环境:python 3.6 +opencv3+Keras
训练集:MNIST
下面划重点:因为MNIST使用的是黑底白字的图片,所以你自己手写数字的时候一定要注意把得到的图片也改成黑底白字的,否则会识别错(至少我得到的结论是这样的 ,之前用白底黑字的图总是识别出错)
注意:需要测试图片需要为与训练模时相同大小的图片,RGB图像需转为gray
代码:
import cv2
import numpy as np
from keras.models import load_model
model = load_model('fm_cnn_BN.h5') #选取自己的.h模型名称
image = cv2.imread('6_b.png')
img = cv2.cvtColor(image,cv2.COLOR_RGB2GRAY) # RGB图像转为gray
#需要用reshape定义出例子的个数,图片的 通道数,图片的长与宽。具体的参加keras文档
img = (img.reshape(1, 1, 28, 28)).astype('int32')/255
predict = model.predict_classes(img)
print ('识别为:')
print (predict)
cv2.imshow("Image1", image)
cv2.waitKey(0)
补充知识:keras转tf并加速(1)Keras转Ten