简单的opencv数字识别代码
时间: 2023-10-30 07:06:13 浏览: 76
好的,以下是一个简单的基于OpenCV的数字识别代码:
```
import cv2
import numpy as np
from keras.models import load_model
# 加载数字识别模型
model = load_model('model.h5')
# 识别函数
def predict(img):
# 根据灰度图像的处理方式来预处理图像
img = cv2.resize(img, (28,28), interpolation=cv2.INTER_AREA)
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
_, img = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY_INV)
img = img / 255.0
img = img.reshape(1,28,28,1)
prediction = model.predict(img)
return np.argmax(prediction[0])
# 读取测试图像
img = cv2.imread('test.jpg')
# 将数字框出来并进行识别
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
_, thresh = cv2.threshold(gray, 100, 255, cv2.THRESH_BINARY_INV)
contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for contour in contours:
(x, y, w, h) = cv2.boundingRect(contour)
roi = gray[y:y + h, x:x + w]
pred = predict(roi)
cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)
cv2.putText(img, str(pred), (x, y), cv2.FONT_HERSHEY_COMPLEX, 1, (0, 0, 255), 2)
# 显示结果
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这段代码使用了一个预训练的模型来进行数字识别,模型可以从文件中加载。然后,该代码使用OpenCV来读取、预处理和识别数字图像。最终,它会在原始图像上绘制出数字和其所在的边界框。
阅读全文