简单的opencv数字识别代码
时间: 2023-10-30 16:07:26 浏览: 83
您好!感谢您使用ChitGPT进行对话。关于您的问题,这里提供一个简单的基于OpenCV的数字识别代码:
```python
import cv2
# 加载训练好的SVM模型
svm = cv2.ml.SVM_load('svm_data.dat')
# 读取待识别图片
img = cv2.imread('test.png')
# 灰度化处理
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 高斯滤波处理
blur = cv2.GaussianBlur(gray, (5, 5), 0)
# 使用自适应阈值二值化
thresh = cv2.adaptiveThreshold(blur, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, 11, 2)
# 外部轮廓检测
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 遍历每个数字轮廓
for contour in contours:
# 获取数字区域,并调整大小为28x28
x, y, w, h = cv2.boundingRect(contour)
digit = thresh[y:y+h, x:x+w]
resized_digit = cv2.resize(digit, (28, 28))
# 将图像数据转化为SVM模型可用的数据格式,并进行预测
sample = resized_digit.reshape((1, 28*28)).astype(np.float32)
ret, result = svm.predict(sample)
# 在原图像上绘制识别结果
cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 2)
cv2.putText(img, str(int(result[0, 0])), (x, y-5), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)
# 展示识别结果
cv2.imshow('Result', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
此代码将使用一个训练好的SVM模型来识别一张图片中的数字,并在原图像上绘制出识别结果。如果您需要更多关于OpenCV和数字识别的学习资源,建议您参考官方文档和在线教程。希望这能帮到您!
阅读全文